KR101796413B1 - 스케일러블 메모리 시스템 프로토콜 내에서 패킷 송신들을 재배열하기 위한 시스템들 및 방법 - Google Patents

스케일러블 메모리 시스템 프로토콜 내에서 패킷 송신들을 재배열하기 위한 시스템들 및 방법 Download PDF

Info

Publication number
KR101796413B1
KR101796413B1 KR1020167036974A KR20167036974A KR101796413B1 KR 101796413 B1 KR101796413 B1 KR 101796413B1 KR 1020167036974 A KR1020167036974 A KR 1020167036974A KR 20167036974 A KR20167036974 A KR 20167036974A KR 101796413 B1 KR101796413 B1 KR 101796413B1
Authority
KR
South Korea
Prior art keywords
packets
packet
data
memory
transaction
Prior art date
Application number
KR1020167036974A
Other languages
English (en)
Other versions
KR20170005498A (ko
Inventor
제이. 토마스 팔로우스키
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20170005498A publication Critical patent/KR20170005498A/ko
Application granted granted Critical
Publication of KR101796413B1 publication Critical patent/KR101796413B1/ko

Links

Images

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)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (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)

Abstract

메모리 디바이스(14)는, 데이터를 저장하는 복수의 메모리 컴포넌트들(24, 26, 28) 및 복수의 메모리 컴포넌트들(24, 26, 28)에 통신가능하게 결합된 프로세서(22)를 포함한다. 프로세서(22)는 복수의 데이터 동작들과 연관된 복수의 패킷들(30)을 수신할 수 있으며, 그 결과 복수의 패킷들(30)의 각각은 개별적인 패킷(30)의 개별적인 데이터 동작과 연관된 메모리 컴포넌트의 유형을 나타내는 트랜잭션 윈도우 필드(42)를 포함한다. 프로세서(22)는 또한, 복수의 패킷들(30)의 각각의 트랜잭션 윈도우 필드(42) 내에 표시된 메모리 컴포넌트의 유형에 기초하여 제 1 순서로 복수의 데이터 동작들을 수행할 수 있다.

Description

스케일러블 메모리 시스템 프로토콜 내에서 패킷 송신들을 재배열하기 위한 시스템들 및 방법{SYSTEMS AND METHODS FOR REORDERING PACKET TRANSMISSIONS IN A SCALABLE MEMORY SYSTEM PROTOCOL}
관련 출원에 대한 상호-참조
본 출원은, 본원에 참조로서 통합되는 “Systems and Methods for a Scalable Memory System Protocol”이라는 명칭으로 2014년 06월 02일자로 출원된 미국 가특허 출원 번호 제62/006,668호에 대한 우선권을 주장하는 정규 출원이다. 본 출원은 또한, 본원에 또한 참조로서 통합되는 “Systems and Methods for Reordering Packet Transmissions in a Scalable Memory System Protocol”이라는 명칭으로 2015년 05월 28일자로 출원된 미국 특허 출원 번호 제14/724,558호에 관한 것이다.
기술분야
본 개시는 전반적으로 메모리 디바이스들을 사용하는 데이터 동작들(예를 들어, 판독, 기입)을 수행하기 위해 사용되는 메모리 시스템 프로토콜에 관한 것이다. 더 구체적으로, 본 개시는, 복수의 메모리 및 프로세싱 조합들을 가능하게 하고, 비트-효율적인 데이터 전송 동작들을 제공하며, 다양한 버스 유형들(예를 들어, 전기, 광)과 조화되는 패킷-기반 스케일러블 프로토콜에 관한 것이다.
본 섹션은, 이하에서 설명되거나 및/또는 청구되는 본 개시의 다양한 측면들에 관한 것일 수 있는 다양한 측면들을 독자에게 소개하도록 의도된다. 본 개시는, 본 개시의 다양한 측면들의 양호한 이해를 용이하게 하기 위하여 배경 정보를 독자에게 제공하는데 도움이 되는 것으로 여겨진다. 따라서, 이러한 문구들은 이러한 관점에서 읽혀야 하며, 종래 기술의 인정으로서 인정되지 않는다는 것이 이해되어야만 한다.
통상적인 프로토콜들은 일반적으로 그들의 이전 모델들과 비교하여 상대적으로 더 낮은 고장 레이트(rate)들을 가지고 메모리 디바이스들 사이에서 패킷들을 송신한다. 그러나, 산업들이 메모리 디바이스들과 다른 컴포넌트들 사이에서 데이터를 이동함에 있어서 수반되는 에너지의 양을 최소화하는 것을 목표로 함에 따라, 패킷 송신의 무결성을 유지하면서 최소량의 에너지를 사용하여 데이터의 패킷들을 효율적으로 이동하는 프로토콜들을 사용하는 것이 바람직할 수 있다.
다음의 상세한 설명을 숙독하고 도면들을 참조할 때 본 개시의 다양한 측면들이 더 양호하게 이해될 수 있다.
도 1은 일 실시예에 따른 컴퓨팅 시스템의 일 예의 블록도를 예시한다.
도 2는, 일 실시예에 따른, 도 1의 컴퓨팅 시스템의 부분일 수 있는 메모리 디바이스의 일 예의 블록도를 예시한다.
도 3은, 일 실시예에 따른, 도 1의 컴퓨팅 시스템 내에서 송신될 수 있는 패킷의 패킷 레벨 도면을 예시한다.
도 4는, 일 실시예에 따른, 도 1의 컴퓨팅 시스템 내에서 송신될 수 있는 패킷의 상세화된 패킷 레벨 도면을 예시한다.
도 5는, 일 실시예에 따른, 도 2의 메모리 디바이스의 부분들인 다양한 유형들의 메모리들에 대해 트랜잭션(transaction) 윈도우들을 할당하기 위한 방법의 순서도를 예시한다.
도 6은, 일 실시예에 따른, 고 레이턴시(latency) 판독 동작들에 대한 2-스테이지 응답의 일 예를 예시한다.
도 7은, 일 실시예에 따른, 고 레이턴시 직접 메모리 액세스 동작에 대한 1-스테이지 응답의 일 예를 예시한다.
도 8은, 일 실시예에 따른, 스케일러블 프로토콜이 2개의 18-비트 요청들을 함께 패킹(pack)하는 레인(lane) 패킹 예를 예시한다.
도 9는, 일 실시예에 따른, 송신을 위해 패킷을 생성하기 위한 방법의 순서도를 예시한다.
도 10은, 일 실시예에 따른, 레인 패킹 기법에 따라 송신될 수 있는 복수의 패킷들을 묘사하는 블록도를 예시한다.
도 11은, 일 실시예에 따른, 레인 패킹 기법에 따라 패킷들을 수신하기 위한 방법의 순서도를 예시한다.
도 12는, 일 실시예에 따른, 패킷들을 수신하는 컴포넌트에 의해 수행되는 재배열 동작들을 위한 방법의 순서도를 예시한다.
도 13은, 일 실시예에 따른, 도 12의 방법을 참조하여 패킷들이 어떻게 재배열되는지를 도시하는 블록도를 예시한다.
도 14는, 일 실시예에 따른, 패킷들을 수신하는 컴포넌트에 의해 수행되는 재배열 동작들을 위한 다른 방법의 순서도를 예시한다.
도 15는, 일 실시예에 따른, 송신 컴포넌트로부터 전송되는 요청들의 송신 레이트를 낮추기 위한 방법의 순서도를 예시한다.
도 16은, 일 실시예에 따른, 선형적인 속도 낮춤(throttle-back)을 도시하는 그래프를 예시한다.
도 17은, 일 실시예에 따른, 비-선형적인 속도 낮춤을 도시하는 그래프를 예시한다.
하나 이상의 특정한 실시예들이 이하에서 설명될 것이다. 이러한 실시예들의 간명한 설명을 제공하기 위하여, 실제 구현예의 모든 특징부들이 명세서에서 설명되는 것은 아니다. 임의의 엔지니어링 또는 설계 프로젝트에서와 같은, 임의의 이러한 실제 구현예의 개발에 있어서, 개발자들의 특정 목표들, 예컨대, 구현예마다 변화할 수 있는 시스템-연관 및 비지니스-연관 제한들의 준수를 달성하기 위하여 다수의 구현-특정 결정들이 이루어져야만 한다는 것이 이해되어야만 한다. 또한, 이러한 개발 노력이 복잡하고 시간 소모적일 수 있지만, 그럼에도 불구하고, 이는 본 개시의 이익을 가질 수 있는 당업자들에게 대하여 설계, 제조, 및 생산의 루틴한 사업일 수 있다는 것이 이해되어야만 한다.
스케일러블 메모리 시스템 프로토콜
이하에서 더 상세하게 설명될 바와 같이, 본 개시는 전반적으로 스케일러블 메모리 시스템 프로토콜에 관한 것이다. 즉, 스케일러블 메모리 시스템 프로토콜은 전송되는 데이터 패킷들(예를 들어, 요청들, 응답들)의 특성들에 기반하여 특정 동작들을 조정할 수 있다. 일 실시예에 있어서, 스케일러블 메모리 시스템 프로토콜("스케일러블 프로토콜")은, 메모리 디바이스들, 컴퓨팅 디바이스들, 및 유사한 것들 사이에서 데이터 패킷들의 효율적인(즉, 전력 효율적인, 비트 효율적인) 송신을 가능하게 하는 패킷-기반 프로토콜일 수 있다. 스케일러블 프로토콜은, 오토마타(automata) 프로세서들, 프로세서-인-메모리, 네트워크 디바이스들, 저장 전기기기들, 계층적 메모리, 추상화 메모리(abstracted memory), 및 유사한 것과 같은 다양한 유형들의 메모리 및 프로세서들과의 복수의 조합들로 구현될 수 있다. 본원에서 사용되는 바와 같은, 프로세서들은 대응하는 전기 디바이스 상에서 실행가능 명령어들을 수행할 수 있는 임의의 적절한 프로세서를 포함할 수 있다. 스케일러블 프로토콜은 또한, 데이터 센터 스위치들/라우터들, 네트워크 라우터들, 모바일 디바이스들, 저장 디바이스들, 오토마타 프로세서들, 스트림 프로세서들, 프로세서-인-메모리, 워크-무빙-프로세서(work-moving-processor)들, 빅 데이터, 빅 그래프, 보안 메모리, 가상 네트워크, 범용 추상화 메모리(예를 들어, 동적 램덤-액세스 메모리(DRAM), NAND, 및 최신 메모리들), 및 유사한 것을 포함하는 디바이스들의 광범위한 범위를 가능하게 할 수 있다.
특정 실시예들에 있어서, 스케일러블 프로토콜은, 최저의 합리적인 스케일러블 프로토콜 오버헤드(overhead)를 유지하면서 다양한 메모리 및 프로세서들 사이에서의 데이터 패킷들의 통신을 가능하게 하도록 설계될 수 있다. 다시 말해서, 스케일러블 프로토콜은, 전체는 아니더라도 스케일러블 프로토콜을 통해 전송되는 대부분의 비트들이 송신되고 있는 대응하는 데이터 패킷들의 직접적인 부분이라는 점에 있어서, 데이터 패킷들의 비트 효율적 전송을 제공하도록 설계될 수 있다. 예를 들어, 이하에서 더 상세하게 논의될 바와 같이, 스케일러블 프로토콜은, 개별적인 패킷들과 연관되지 않는 0들을 가지고 신호들을 패딩(pad)하지 않으면서 요청 패킷들을 함께 패킹하는 것을 가능하게 할 수 있으며, 그럼으로써 버스의 송신 레인들을 통해 송신되는 데이터 패킷들의 비트 효율성을 최대화할 수 있다.
데이터 패킷들을 전송하기 위한 비트-효율적 메커니즘을 제공하는 것에 더하여, 스케일러블 프로토콜은, 전기적 또는 광학적 버스들과 같은 다수의 버스 유형들과 조화될 수 있다. 또한, 스케일러블 프로토콜은, 인코딩, 레인 카운팅, 채널 카운팅, 속도, 스타일, 시스템의 인스턴스생성(instantiation) 카운트, 및 유사한 것을 포함하는 개별적인 버스에 관한 다양한 동작들을 제공하는 것이 가능할 수 있다.
스케일러블 프로토콜
전술한 것을 유념하면, 스케일러블 프로토콜은, 패킷 고장들이 드물도록(예를 들어, < 1e-6), 성공적인 트랜잭션들을 제공하기 위하여 최적화될 수 있다. 스케일러블 프로토콜은 또한, 처리될 수 있는 패킷 송신 유형들, 크기들, 및 복수의 상이한 패킷 크기들 사이에서 신중한 트레이드오프(tradeoff)를 제공할 수 있다.
이상에서 논의된 바와 같이, 산업들은 점점 더 데이터 이동 에너지를 최소화하는데 초점이 맞추어진다. 즉, 메모리 디바이스들 사이에서 데이터 패킷들을 이동하는데 소모되는 에너지가 최소화되어야만 한다. 이와 같이, 스케일러블 프로토콜은 합리적인 범위 내에서, 다른 비트들 또는 메시지들로부터 식별될 수 있거나 또는 달리 불필요할 수 있는 특정 비트들 및 메시지들을 제거할 수 있다. 예를 들어, 스케일러블 프로토콜은, 디바이스가 수신기에 이미 알려졌을 수 있는 정보에 관한 데이터를 송신해야 할 필요성을 제거할 수 있다.
또한, 효율적인 데이터 이동 동작들을 제공하기 위하여, 스케일러블 프로토콜은 "메모리로 전송되는" 트랜잭션들을 가능하게 할 수 있다. 스케일러블 프로토콜을 또한 로컬 동작들을 전송할 수 있으며, 여기에서 외부 제어 동작들을 갖는 내부 데이터 흐름은 외부 제어 동작들에 비하여 상대적으로 낮다. 또한, 스케일러블 프로토콜은, 개별적인 패킷 내에서 송신되는 데이터의 양(예를 들어, 페이로드)에 기초하여 조정할 수 있는 동적 필드 크기를 사용하여 오버헤드를 최소화하는 오류 제어 전략(strategy)을 구현할 수 있다.
스케일러블 프로토콜은 또한 데이터를 전달하기 위하여 최소 수의 필드들을 사용하도록 설계될 수 있다. 이와 같이, 스케일러블 프로토콜은, 모든 패킷이 모든 이용가능한 필드들을 사용하지는 않을 수 있기 때문에 필드 크기 튜닝(tuning) 및 유연성을 허용할 수 있다.
스케일러블 프로토콜은 또한, 저-레이턴시 및 고-레이턴시 데이터의 공존을 가능하게 하도록 설계될 수 있다. 예를 들어, 스케일러블 프로토콜은, 고-레이턴시 데이터의 송신 사이에 저-레이턴시 데이터의 송신을 인터레이싱(interlace)하기 위한 능력을 제공할 수 있다.
스케일러블 프로토콜의 설계는, 가변적인 패킷 크기가 개별적인 패킷의 단일 필드 내에서 결정될 수 있다는 점에 있어서 간단하고 일반적인 것으로 특징지어질 수 있다. 또한, 스케일러블 프로토콜은, 복잡한 트랜잭션들 및 동작들을 수행할 수 있게 남아 있으면서 그것의 동작들과 관련하여 단순성을 유지할 수 있다. 이에 더하여, 스케일러블 프로토콜은, 현재는 제공하도록 설계되지 않을 수 있는 장래의 기능들을 가능하게 하기에 충분히 유연할 수 있다.
특정 실시예들에 있어서, 스케일러블 프로토콜은, 로컬 배열(ordering) 기법들을 사용하여 패킷들이 전송되는 순서를 제한할 수 있다. 즉, 스케일러블 프로토콜은 특정한 전역 동기화 배열 규칙들 또는 유사한 것을 시행하지 않을 수 있다. 스케일러블 프로토콜이 추상적으로 남아 있다는 개념에 대하여 참(true)으로 머물러 있기 위하여, 스케일러블 프로토콜은 특수 디바이스와의 또는 다양한 유형들의 채널 속성들과의 동작들을 가능하게 할 수 있다.
전술한 것을 유념하면, 본 개시는, 전술된 이점들을 제공하기 위하여 스케일러블 프로토콜 내에서 구현될 수 있는 다수의 시스템들 및 기술들을 설명한다. 이하에서 상세화되는 특정 시스템들 또는 기술들이 다른 시스템들 또는 기술들에 대하여 독립적으로 설명된다고 하더라도, 본원에서 설명되는 시스템들 및 기술들의 각각이 본원에서 또한 설명되는 다양한 다른 시스템들 및 기술들과 함께 구현될 수 있다는 것을 주의해야만 한다.
스케일러블 프로토콜을 사용하는 컴퓨팅 및 메모리 시스템들
이제 도면들을 참조하면, 도 1은 본원에서 설명되는 다양한 기술들 및 시스템들을 이용할 수 있는 컴퓨팅 시스템(10)의 블록도를 예시한다. 컴퓨팅 시스템(10)은, 컴퓨터, 호출기, 셀룰러 폰, 개인용 전자수첩, 제어 회로 등과 같은 다양한 컴퓨팅 디바이스들 중 임의의 것일 수 있다. 컴퓨팅 시스템(10)은, 복수의 메모리 디바이스들(14)에 결합될 수 있는 호스트 시스템 온 칩(system on chip; SoC)(12)을 포함할 수 있다. 호스트 SoC(12)는, 컴퓨터 또는 다른 전자 시스템의 모든 컴포넌트들을 단일 칩 내에 통합하는 집적 회로(integrated circuit; IC)일 수 있다. 이와 같이, 호스트 SoC(12)는, 컴퓨팅 시스템(10) 내에서 시스템 기능들 및 요청들의 프로세싱을 제어할 수 있는 마이크로프로세서와 같은 하나 이상의 프로세서들을 포함할 수 있다.
이상에서 언급된 바와 같이, 호스트 SoC(12)는 메모리 디바이스들(14)에 결합될 수 있다. 특정 실시예들에 있어서, 호스트 SoC(12)는 채널들(16)을 통해 메모리 디바이스들(14)에 결합될 수 있다. 채널들(16)은 버스들, 전기적 배선, 또는 유사한 것을 포함할 수 있다.
도 2는 메모리 디바이스(14)의 일 실시예의 블록도를 도시한다. 메모리 디바이스(14)는 디지털 데이터를 보유하도록 설계된 임의의 저장 디바이스를 포함할 수 있다. 메모리 디바이스(14)는, 휘발성 메모리 및 비-휘발성 메모리를 포함하는 다양한 메모리 컴포넌트들을 포괄할 수 있다. 휘발성 메모리는, 동적 랜덤 액세스 메모리(DRAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)을 포함할 수 있다. 또한, 휘발성 메모리는, 다수의 메모리 모듈들, 예컨대 단일 인라인 메모리 모듈(single inline memory module; SIMM)들 또는 듀얼 인라인 메모리 모듈(dual inline memory module; DIMM)들을 포함할 수 있다.
비-휘발성 메모리는, 휘발성 메모리와 함께 사용되기 위한 판독-전용 메모리(ROM), 예컨대 EPROM, 및/또는 플래시 메모리(예를 들어, NAND)를 포함할 수 있다. 추가적으로, 비-휘발성 메모리는 고 용량 메모리, 예컨대 테이프 또는 디스크 드라이브 메모리를 포함할 수 있다. 이해될 바와 같이, 휘발성 메모리 또는 비-휘발성 메모리는, 코드(예를 들어, 명령어들)을 저장하기 위한 비-일시적이고 유형적인 기계-판독가능 매체로서 간주될 수 있다.
도 2에 도시된 바와 같이, 특정 실시예들에 있어서, 메모리 디바이스(14)는, 메모리 디바이스(14) 상에 저장된 메모리 컴포넌트들에 밀접하게 결합되는, 프로세서-인-메모리(processor-in-memory; PIM) 또는 컴퓨터 프로세서(computer processor; CPU)와 같은 임의의 적절한 프로세서일 수 있는 시스템 온 칩(SoC)(22)을 포함할 수 있다. 일반적으로, 메모리 SoC(22)는 메모리 디바이스(14)의 메모리 컴포넌트들과 동일한 실리콘 칩 상에 존재할 수 있다. 프로세싱 및 메모리 컴포넌트들을 메모리 디바이스(14) 내에 병합함으로써, 메모리 SoC(22)는, 메모리 컴포넌트들과 호스트 SoC(12) 사이에서 데이터 요청들 및 응답들이 송신되고 수신되는 방식을 관리할 수 있다. 특정 실시예들에 있어서, 메모리 SoC(22)는 레이턴시를 감소시키고 대역폭을 증가시키기 위하여 메모리 컴포넌트들 사이의 트래픽을 제어할 수 있다. 이해될 바와 같이, 호스트 SoC(12) 및 메모리 SoC(22)는, 본원에서 설명되는 실시예들에 따라 메모리 컴포넌트들과 다른 디바이스들 사이에서의 송신을 제어할 때 스케일러블 메모리 시스템 프로토콜을 이용할 수 있다. 이와 같이, 스케일러블 메모리 시스템 프로토콜은, 메모리 컴포넌트들과 메모리 SoC(22) 사이의 채널들(29) 상에서뿐만 아니라, 메모리 디바이스(14)와 호스트 SoC(12) 사이의 채널들(16) 상에서 동작할 수 있다.
특정 실시예들에 있어서, 메모리 디바이스(14)는 버퍼(23)를 또한 포함할 수 있다. 버퍼(23)는 메모리 SoC(22)에 의해 수신되는 하나 이상의 패킷들을 저장할 수 있다. 메모리 SoC(22)가 버퍼(23)를 사용할 수 있는 방법에 관한 추가적인 세부사항들은 도 15 내지 도 17을 참조하여 이하에서 설명될 것이다. 예로서, 메모리 디바이스(14)는 메모리 유형들, 예컨대, NAND 메모리들(24), 감소-레이턴시 동적 랜덤 액세스 메모리(Reduced-latency Dynamic random access memory; RLDRAM)(26), 더블 데이터 레이트 4세대 동기식 동적 랜덤-액세스 메모리(double data rate fourth generation synchronous dynamic random-access memory; DDR4)(28), 및 유사한 것을 포함할 수 있다.
특정 실시예들에 있어서, 호스트 SoC(12) 및 메모리 SoC(22)는 메모리 컴포넌트들, 레지스터들, 및 유사한 것을 통해 제공되는 컴퓨터-실행가능 명령어들에 기초하여 다양한 동작들을 수행할 수 있다. 메모리 컴포넌트들 또는 저장부는, 프로세서-실행가능 코드, 데이터, 또는 유사한 것을 저장하기 위한 매체들로서 역할할 수 있는 임의의 적절한 제조 물품일 수 있다. 이러한 제조 물품들은, 지금 개시되는 기술들을 수행하기 위하여 호스트 SoC(12) 또는 메모리 SoC(22)에 의해 사용되는 프로세서-실행가능 코드를 저장할 수 있는 컴퓨터-판독가능 매체들(즉, 임의의 적절한 형태의 메모리 또는 저장부)을 나타낼 수 있다. 메모리 및 저장부는 또한, 데이터, 데이터의 분석, 및 유사한 것을 저장하기 위하여 사용될 수 있다. 메모리 및 저장부는, 본원에서 설명되는 다양한 기술들을 수행하기 위하여 호스트 SoC(12) 또는 메모리 SoC(22)에 의해 사용되는 프로세서-실행가능 코드를 저장할 수 있는 비-일시적인 컴퓨터-판독가능 매체들(즉, 임의의 적절한 형태의 메모리 또는 저장부)을 나타낼 수 있다. 비-일시적인은 단지 매체가 유형적이고 신호가 아니라는 것을 나타낸다는 것을 주의해야만 한다.
스케일러블 프로토콜에 관한 다양한 측면들의 다음의 설명이 호스트 SoC(12) 및 메모리 SoC(22)에 대하여 수행되는 것으로서 본원에서 설명되지만, 본원에서 설명되는 시스템들 및 기술들 전부는 임의의 적절한 디바이스를 사용하여 수행될 수 있다는 것을 주의해야만 한다. 즉, 스케일러블 프로토콜은 임의의 2개의 디바이스들 사이의 통신, 예컨대 2개의 프로세서들, 2개의 메모리 모듈들, 프로세서 및 메모리 모듈, 및 유사한 것 사이의 통신들을 가능하게 할 수 있다.
스케일러블 프로토콜 내의 패킷들의 패킷-레벨 도면
메모리 컴포넌트들을 수반하는 요청들 및 응답들을 송신할 때 스케일러블 메모리 시스템 프로토콜을 이용하기 위하여, 메모리 SoC(22)는 도 3에 예시된 패킷(30)의 패킷 레벨 도면에 따라 구조화된 데이터의 패킷들을 전송할 수 있다. 도 3에 도시된 바와 같이, 패킷(30)은, 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 오류 제어 코드(error control code; ECC) 필드(36)를 포함할 수 있다. 트랜잭션 유형 필드(32)는, 송신의 유형, 송신되는 패킷의 유형, 또는 이들 둘 모두를 나타내는 데이터를 포함할 수 있다. 트랜잭션 유형 필드(32)는 또한, ECC 필드 내의 비트들의 수 및 데이터 페이로드 내의 비트들의 수를 나타내기 위한 패킷 크기를 나타낼 수 있으며, 그럼으로써 전체 패킷 내의 비트들의 수를 나타낸다. 특정 실시예들에 있어서, 트랜잭션 유형 필드(32)는 간접적인 방식으로 페이로드 필드(34) 및 ECC 필드(36)의 크기를 나타낼 수 있다. 예를 들어, 트랜잭션 유형 필드(32) 내에 저장된 데이터는 룩업(lookup) 테이블에 대한 인덱스로서 역할할 수 있다. 룩업 테이블은 페이로드 필드(34) 및 ECC 필드(36)의 크기에 관한 정보를 제공할 수 있다. 이와 같이, 일 예에 있어서, 메모리 SoC(22)는 패킷(30)을 수신하고, 페이로드 필드(34) 및 ECC 필드(36)의 크기들을 결정하기 위하여 메모리 디바이스(14) 내에 저장될 수 있는 룩업 테이블에 대한 인덱스로서 트랜잭션 유형 필드(32) 내에 저장된 데이터를 사용할 수 있다.
특정 실시예들에 있어서, 트랜잭션 유형 필드(32)는, 채널들(16), 채널들(29), 또는 유사한 것을 포함할 수 있는 요청 버스(Q) 또는 응답 버스(S) 상에서 패킷이 송신되는지 여부에 기초하여 패킷들의 상이한 유형들을 지정할 수 있다. 일반적으로, 요청 버스(Q) 및 응답 버스(S)는 별개이고, 단방향이거나, 또는 공통 입력들/출력들일 수 있다. 요청 버스(Q)는 일반적으로 q개의 레인들을 포함하며, 응답 버스(S)는 일반적으로 s개의 레인들을 포함한다.
요청 버스(Q) 상에서 송신되는 패킷들(30)에 대한 예시적인 트랜잭션 유형 필드들(32)은, 판독 동작들(예를 들어, 8u판독(8uRead), 8u판독2, var판독(varRead), 여기에서 u는 데이터의 8-비트 유닛 또는 9-비트 유닛일 수 있거나, 또는 어쩌면 비-정수 유닛 크기일 수 있음), 메시지 데이터(예를 들어, 메시지), 판독-수정-기입(read-modify-write; RMW) 동작들(예를 들어, RMW1A, RMW2A, RMW3A, RMW4A), 데이터세트들(예를 들어, 32u데이터, 64u데이터, 128u데이터, 256u데이터), 패턴 기입 동작들(예를 들어, 8u패턴기입(PatternWrite), 16u패턴기입), 기입-위드-인에이블(write-with-enable) 동작들(예를 들어, 8u기입위드인에이블(WriteWithEnable)들, 16u기입위드인에이블들), 기입 동작들(예를 들어, 8u기입, 16u기입, 32기입, 48u기입, 64기입, 80u기입, 96u기입, 112u기입, 128기입, 256기입), 및 유사한 것을 포함할 수 있다. 32기입 동작들 및 64기입 동작들을 제공하는 것은, 최대 패킷 크기를 선택함에 있어서 시스템 설계자에게 더 많은 유연성을 제공할 수 있다. 일 실시예에 있어서, 스케일러블 프로토콜은 256유닛의 한계를 가질 수 있지만, 더 작은 최대 패킷 크기를 사용하는 것이 시스템 레이턴시를 도울 수 있다. 32u기입과 32기입 사이의 차이점은, 32u기입이 단일의 고정된 크기이며, 트랜잭션크기(TransactionSize)가 패킷 내에 포함되지 않는다는 것임이 이해되어야만 한다. 반면, 32기입은 트랜잭션크기를 포함하며, 따라서 원본 요청 패킷 내에 포함된 32U 청크(chunk)만이 아니라, 데이터의 추가적인 32U 청크들을 수반할 수 있다. 요청 버스(Q)에 대하여 이상에서 열거된 트랜잭션 유형의 예들을 유의하면, 요청 버스(Q)를 통해 송신되는 패킷들(30)은 총 26개의 네이티브(native) 트랜잭션들(예를 들어, 8u기입, 메시지, RMW1A, 등)을 포함할 수 있으며, 이들의 각각은 전역 시스템(즉, 그 내부에서 패킷들이 유닛으로부터 유닛으로 릴레이되는 다수의 CPU 모듈들 및/또는 다수의 메모리 디바이스 모듈들을 포함하는 시스템) 또는 로컬 시스템(즉, 그 내부에서 패킷들이 릴레이 없이 유닛들 사이에서 점 대 점으로 이동하는 몇몇 모듈들을 포함하는 시스템)에 대하여 5-비트 필드를 사용하여 표현될 수 있다. 이와 같이, 일 실시예에 있어서, 요청 버스(Q) 상의 패킷(30)에 대한 트랜잭션 유형 필드(32)는 5 비트일 수 있다.
동일한 방식으로, 응답 버스(S) 상에서 송신되는 패킷들(30)에 대한 예시적인 트랜잭션 유형 필드들(32)은, 메시지 데이터(예를 들어, 메시지), 데이터세트들(예를 들어, 8u데이터, 16u데이터, 32u데이터, 48u데이터, 64u데이터, 80u데이터, 96u데이터, 112u데이터, 128u데이터, 256u데이터), 및 유사한 것을 포함할 수 있다. 다시, 응답 버스(S)에 대하여 이상에서 열거된 트랜잭션 유형 예들을 유의하면, 응답 버스(S)를 통해 송신되는 패킷들(30)은 총 11개의 네이티브 트랜잭션들(예를 들어, 메시지, 8u데이터, 등)을 포함할 수 있으며, 이들의 각각은 로컬 시스템에 대하여 4-비트 또는 5-비트 필드를 사용하여 표현될 수 있다. 이와 같이, 일 실시예에 있어서, 응답 버스(S) 상의 패킷(30)에 대한 트랜잭션 유형 필드(32)는 4 비트일 수 있다.
26개의 요청 버스(Q) 트랜잭션 유형들 및 11개의 응답 버스(S) 트랜잭션 유형들이 5개의 동일한 트랜잭션 유형들(예를 들어, 메시지, 128u데이터, 256u데이터)을 포함하기 때문에, 요청 버스(Q) 및 응답 버스(S)에 의해 사용되는 트랜잭션 유형들의 총 수는 32일 수 있다. 이러한 32개의 트랜잭션 유형들은 따라서 5-비트 필드 내에 표현될 수 있다. 트랜잭션 유형들에 관한 추가적인 세부사항들이 이하에서 추가로 논의될 것이다.
다시 도 3을 참조하면, 패킷(30)은 또한 페이로드 필드(34), 및 오류 제어 코드(error control code; ECC) 필드(36)를 포함할 수 있다. 이상에서 언급된 바와 같이, 페이로드 필드(34) 및 ECC 필드(36)의 개별적인 크기는 트랜잭션 유형 필드(32) 내의 데이터에 기초하여 결정될 수 있다. 예로서, 페이로드 필드(34)는 대략 45 비트 내지 2093 비트 사이일 수 있으며, ECC 필드(36)는 대략 6 비트 내지 37 비트 사이일 수 있다. 페이로드 필드(34)는 각기 요청 또는 응답 버스를 통해 전송되고 있는 요청 또는 응답을 나타내는 데이터를 포함할 수 있다.
ECC 필드(36)는, 수신 컴포넌트에 의해 수신된 패킷(30)이 임의의 오류들을 포함하고 있는지 여부를 결정하기 위한 오류 제어 코드를 포함할 수 있다. 이와 같이, 오류 제어 코드는, 송신의 프로세스 동안에 또는 저장부 상에서 복수의 오류들이 도입되었던 경우에도 수신 컴포넌트에 의해 원본 데이터가 복원될 수 있도록, 메시지에 중복 데이터 또는 패러티 데이터를 부가하는 것과 같은 다양한 알고리즘들을 포함할 수 있다. 일반적으로, 오류 제어 코드는, 코드의 제한들 내에서 오류를 검출하고, 오류가 검출될 때 잘못된 패킷을 재송신하는 것과 같은 추가적인 액션을 나타내기 위한 능력을 제공할 수 있다.
트랜잭션 유형 필드
이상에서 언급된 바와 같이, 스케일러블 프로토콜은 다양한 유형들의 동작들을 더 효율적으로 수행하기 위하여 트랜잭션 유형 필드를 갖는 패킷들을 사용할 수 있다. 일반적으로, 스케일러블 프로토콜은, 추상화된 메모리 아키텍처가 임의의 메모리 유형을 이용하고 단일 추상화 프로토콜을 사용하여 다양한 유형들의 데이터 프로세싱을 통합하는 것을 가능하게 할 수 있다. 이를 유념하면, 트랜잭션 유형 필드(32)가 정보의 2개의 별개의 조각들을 제공하기 때문에, 트랜잭션 유형 필드(32)는 스케일러블 프로토콜이 다양한 유형들의 데이터 프로세싱을 수행하는 것을 가능하게 하기 위한 데이터의 유용한 조각일 수 있다. 즉, 트랜잭션 유형 필드(32)는 프로토콜 내에서 가능한 최소의 비트 카운트 점유를 위하여 2개의 데이터 필드들(즉, 유형 및 크기)을 하나로 결합한다.
이하에서 보여질 바와 같이, 스케일러블 프로토콜은 송신 효율성을 위하여 가변 크기 패킷들을 지원할 수 있다. 이와 같이, 시스템이 비동기화되는 것을 방지하기 위하여 패킷의 크기를 수신 컴포넌트에 나타내는 것이 유용할 수 있다. 여기에서, 트랜잭션 유형 필드(32)는 수행되고 있는 시스템 트랜잭션의 유형을 식별하는 단일 필드를 제공할 수 있으며, 트랜잭션 유형에 의하여 패킷 크기를 암시적으로 정의할 수 있다. 다시 말해서, 트랜잭션 유형 필드(32)는 송신 컴포넌트에 의해 요청되고 있는 트랜잭션의 유형을 나타낼 수 있으며, 그러면 수신 컴포넌트는 지정된 트랜잭션 유형에 기초하여 대응하는 패킷(예를 들어, 페이로드 필드(34) 및 ECC 필드(36))의 크기를 결정할 수 있다. 이와 같이, 트랜잭션 유형 필드(32)는 정보를 전달하기 위한 비트-효율적 방식을 제공하기 위하여 스케일러블 프로토콜에 의해 이용되는 이중-목적 필드일 수 있다.
특정 실시예들에 있어서, 트랜잭션 유형 필드(32)는 또한 페이로드 필드(34) 내에 제공될 수 있는 데이터에 관한 추가적인 정보를 나타낼 수 있다. 예를 들어, 트랜잭션 유형 필드(32)의 값에 기초하여, 트랜잭션 윈도우 정보(윈도우), 어드레스 정보(어드레스), 우회(indirection) 레벨들(레벨들) 정보, 메시지 유형 정보, 원시(raw) 데이터, 및 다른 유형들의 정보가 페이로드 필드(34)의 부분인 것으로 확인될 수 있다. 페이로드 필드(34)의 부분일 수 있는 정보에 관한 세부사항들이 이하에서 더 상세하게 논의될 것이다.
스케일러블 프로토콜은 하나 이상의 요청 버스(Q) 트랜잭션들 및 하나 이상의 응답 버스(S) 트랜잭션들을 갖는 시스템 내에서 이용될 수 있다. 요청 버스(Q) 및 응답 버스(S)가 이상에서 각기 5-비트 필드 및 4-비트 필드인 것으로서 설명되었지만, 요청 버스(Q) 및 응답 버스(S)가 다양한 상이한 비트 크기들을 갖도록 설계될 수 있다는 것을 주의해야만 한다. 예로서, 요청 버스(Q)는, 가능한 트랜잭션 유형들이 다음과 같이 5-비트 필드와 연관될 수 있도록 5-비트 필드(예를 들어, 00000, 00001, ..., 11110, 11111)를 사용하여 표시될 수 있다(여기에서 데이터 유닛 u 크기는 8 비트이다):
01011 - 8u판독 - 8B 데이터 판독 동작은 추가적인 필드들을 제공한다(예를 들어, 페이로드 필드(34) 내의 서브-필드들): 윈도우, 어드레스, 레벨들(우회 레벨들)
01101 - var판독 - 가변 데이터 크기 판독 동작은 추가적인 필드들을 제공한다: 트랜잭션크기, 윈도우, 어드레스, 레벨들
00000 - 메시지 - 일반적인 메시지는 추가적인 필드들, 즉, 윈도우, 메시지유형(MessageType), 데이터를 제공한다(데이터는 필드 크기에 의해서만 제한된다, 예를 들어, Nack 메시지 유형은, 데이터시퀀스(DataSequence), 발원트랜잭션유형(OriginatingTransactionType), 발원윈도우(OriginatingWindow)를 포함할 수 있다)
01110 - RMW1A - 통합된 단일 어드레스를 갖는 판독-수정-기입 요청은 추가적인 필드들을 제공한다: 트랜잭션크기, 윈도우, 어드레스, 오피코드(OpCode), 직접데이터(ImmediateData)
01100 - 8u판독2 - 2개의 8B 데이터 판독 동작들은 추가적인 필드들을 제공한다: 제1_윈도우, 제1_어드레스, 제1_레벨들, 제2_레벨들, 제2_어드레스
10110 - 8u기입 - 8B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 8B 데이터
10010 - 8u기입P - 한번 또는 그 이상 기입될 8B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 트랜잭션크기, 레벨들, 8B 데이터
01111 - RMW2A - 통합된 2개의 어드레스들을 갖는 판독-수정-기입 요청은 추가적인 필드들을 제공한다: 트랜잭션크기, 제1_윈도우, 제1_어드레스, 오피코드, 직접데이터, 제2_윈도우, 제2_어드레스
10100 - 8uWriteEn - 기입인에이블비트들(WriteEnableBits) 및 8B 데이터를 갖는 기입은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 8인에이블 비트들, 8B 데이터
10000 - RMW3A - 통합된 3개의 어드레스들을 갖는 판독-수정-기입 요청은 추가적인 필드들을 제공한다: 트랜잭션크기, 제1_윈도우, 제1_어드레스, 오피코드, 직접데이터, 제2_윈도우, 제2_어드레스, 제3_윈도우, 제3_어드레스
10111 - 16u기입 - 16B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 16B 데이터
10011 - 16u기입P - 한번 또는 그 이상 기입될 16B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 트랜잭션크기, 레벨들, 16B 데이터
10101 - 16uWriteEn - 기입인에이블비트들 및 16B 데이터를 갖는 기입은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 16 인에이블 비트들, 16B 데이터
10001 - RMW4A - 통합된 4개의 어드레스들을 갖는 판독-수정-기입 요청은 추가적인 필드들을 제공한다: 트랜잭션크기, 제1_윈도우, 제1_어드레스, 오피코드, 직접데이터, 제2_윈도우, 제2_어드레스, 제3_윈도우, 제3_어드레스, 제4_윈도우, 제4_어드레스
00011 - 32u데이터 - 확장된 데이터 패킷은 추가적인 필드들을 제공한다: 윈도우, 32B 데이터. 확장된 데이터 패킷들이 순서대로 송신되기 때문에 데이터 시퀀스 번호가 명시적으로 송신되지 않으며, 따라서 수신기가 시퀀스를 첨부할 수 있다는 것을 주의해야 한다. 후속 NACK가 요구되는 경우, 암시적인 시퀀스 번호가 기준으로서 사용된다.
11000 - 32기입 - 32B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 32B 데이터, 트랜잭션크기
11001 - 48u기입 - 48B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 48B 데이터
00101 - 64u데이터 - 확장된 데이터 패킷은 추가적인 필드들을 제공한다: 윈도우, 64B 데이터. 확장된 데이터 패킷들이 순서대로 송신되기 때문에 데이터 시퀀스 번호가 명시적으로 송신되지 않으며, 따라서 수신기가 시퀀스를 첨부할 수 있다는 것을 주의해야 한다. 후속 NACK가 요구되는 경우, 암시적인 시퀀스 번호가 기준으로서 사용된다.
11010 - 64기입 - 64B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 64B 데이터, 트랜잭션크기
11011 - 80u기입 - 80B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 80B 데이터
11100 - 96u기입 - 96B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 96B 데이터
11101 - 112u기입 - 112B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 112B 데이터
01001 - 128u데이터 - 확장된 데이터 패킷은 추가적인 필드들을 제공한다: 윈도우, 128B 데이터. 확장된 데이터 패킷들이 순서대로 송신되기 때문에 데이터 시퀀스 번호가 명시적으로 송신되지 않으며, 따라서 수신기가 시퀀스를 첨부할 수 있다는 것을 주의해야 한다. 후속 NACK가 요구되는 경우, 암시적인 시퀀스 번호가 기준으로서 사용된다.
11110 - 128기입 - 128B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 128B 데이터, 트랜잭션크기
01010 - 256u데이터 - 확장된 데이터 패킷은 추가적인 필드들을 제공한다: 윈도우, 256B 데이터. 확장된 데이터 패킷들이 순서대로 송신되기 때문에 데이터 시퀀스 번호가 명시적으로 송신되지 않으며, 따라서 수신기가 시퀀스를 첨부할 수 있다는 것을 주의해야 한다. 후속 NACK가 요구되는 경우, 암시적인 시퀀스 번호가 기준으로서 사용된다.
11111 - 256기입 - 256B 데이터를 포함하는 기입 요청은 추가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 256B 데이터, 트랜잭션크기
열거된 예시적인 트랜잭션 유형들은, (임의의 비의도적인 배열 오류들이 없다면) 다음의 패킷 크기의 순서로 제공되며, 이는 5-비트 트랜잭션 유형, 4-비트 트랜잭션 크기, 3-비트 윈도우, 48-비트 어드레스, 7-비트 데이터 시퀀스 번호, 및 각각의 트랜잭션 유형에 대하여 특별히 선언된 데이터 필드 내의 추가(extra) 비트들을 가정한다. 또한, 이상에서 언급된 바와 같이, 패킷(30)은, 통상적인 프로토콜들과 같이 고정된 크기일 수 있는 ECC 필드(36)를 포함할 수 있다. 그러나, 이해될 바와 같이, 특정 실시예들에 있어서, ECC 필드(36)는 이하에서 더 상세하게 논의될 바와 같이 가변 크기일 수 있다.
전술한 것을 유념하면, 응답 버스(S) 트랜잭션들은 4-비트 필드(예를 들어, 0000, 0001, ..., 1110, 1111)를 사용하여 표시될 수 있다. 그러나, 트랜잭션 유형 필드(32)가 5 비트인 경우, 트랜잭션 유형 필드(32)는 단순히 추가적인 선행 0(zero)을 포함할 수 있다. 응답 버스(S) 트랜잭션들에 대한 예시적인 4-비트 트랜잭션 유형들은 다음을 포함할 수 있다:
0000 - 메시지 - 일반적인 메시지는 추가적인 필드들을 제공한다: 윈도우, 메시지유형, 데이터(완료(Completion), 재배열(ReOrder), NACK 및 다른 것들과 같은 다양한 메시지 유형들이 존재한다는 것을 주의해야 한다)
0001 - 8u데이터 - 8B 데이터 응답은 추가적인 필드를 제공한다: 윈도우, 8B 데이터
0010 - 16u데이터 - 16B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 16B 데이터
0011 - 32u데이터 - 32B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 32B 데이터
0100 - 48u데이터 - 48B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 48B 데이터
0101 - 64u데이터 - 64B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 64B 데이터
0110 - 80u데이터 - 80B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 80B 데이터
0111 - 96u데이터 - 96B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 96B 데이터
1000 - 112u데이터 - 112B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 112B 데이터
1001 - 128u데이터 - 128B 데이터 응답은 추가적인 필드들을 제공한다: 윈도우, 128B 데이터
1010 - 256u데이터 - 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 비트의 크기일 수 있는 패킷 크기 필드를 포함할 수 있다. 대안적으로, 패킷 크기 필드는 24개의 상이한 길이들의 각각을 구별하기 위하여 5 비트 크기일 수 있으며, 그러면 해석 함수(translation function)가 정확한 플리트 카운트를 결정하기 위하여 사용될 수 있다. 통상적인 프로토콜들과 달리, 스케일러블 프로토콜은 패킷 크기 필드를 이용하지 않을 수 있다. 그 대신, 시스템은 트랜잭션 유형에 기초하여 패킷의 크기를 결정하기 위한 해석 함수를 사용할 수 있으며, 그런 다음 프로토콜 비트들을 저장할 수 있다.
트랜잭션 윈도우들
오류 제어 코드들에 대하여 개선된 비트-효율성을 제공하는 것에 더하여, 스케일러블 프로토콜은 그들의 개별적인 트랜잭션 유형들에 따라 패킷들을 조직하고, 그들의 개별적인 트랜잭션 유형들에 기초하여 특정 순서에 따라 조직된 패킷들을 송신할 수 있다. 통상적인 프로토콜들에 있어서, 요청들은 그들이 송신되었던 시간에 따라 배열될 수 있다. 이러한 경우에 있어서, 제 1 요청은 고 레이턴시를 수반하며, 다음 요청(즉, 제 2 요청)은 저 레이턴시를 수반하고, 제 2 요청은, 제 2 요청이 제 1 요청보다 더 빠르게 완료될 수 있다고 하더라도 제 1 요청이 완료되는 것을 기다려야만 할 수 있다. 결과적으로, 제 1 요청이 버스를 꽉 막을(choke) 수 있다. 다시 말해서, 제 1 요청은, 저 레이턴시 요청들이 더 높은 레이턴시 요청들보다 더 빠르게 해결될 수 있다고 하더라도, 버스가 상대적으로 낮은 레이턴시 요청들에 응답하는 것을 방지할 수 있다.
버스 내에서 상이한 유형들의 트랜잭션 요청들을 혼합하기 위한 더 효율적인 방식을 제공하기 위하여, 스케일러블 프로토콜은 요청들이 서비스될 순서를 결정하기 위하여 트랜잭션 윈도우들을 사용할 수 있다. 트랜잭션 윈도우는 가상 어드레스 공간을 사용하여 구현된 가상 채널일 수 있다. 각각의 트랜잭션 윈도우는 NAND 및 DRAM과 같은 개별적인 메모리 디바이스와 연관될 수 있다. 이와 같이, 단일 트랜잭션 윈도우는, 레이턴시, 대역폭, 입도(granularity), 지속성, 및 유사한 것과 같은 동일한 특성들을 갖는 메모리 또는 메모리들과 연관될 수 있다.
일반적으로, 트랜잭션 윈도우는, 각각의 특정 트랜잭션에 대한 약속(engagement)의 규칙의 특정 세트와 연관된 정보를 제공할 수 있다. 이상에서 언급된 바와 같이, 트랜잭션 윈도우 데이터는, 특정 트랜잭션들에 대하여 패킷들을 송신하고 수신하기 위하여 사용되고 있는 물리적인 버스(예를 들어, 채널들(29))의 레인들의 세트를 지정할 수 있다. 트랜잭션 윈도우에 의해 지정되는 레인들의 세트는, 메모리 디바이스(14)에 액세스가능한 가상 채널로서 지칭될 수 있다. 본원에서 설명되는 채널들(29)은 데이터가 전송될 수 있는 하나 이상의 레인들을 포함한다는 것을 주의해야만 한다. 패킷들의 송신 또는 수신과 관련된 특정 특징들(예를 들어, 배열)을 특징짓기 위하여 트랜잭션 윈도우 데이터를 사용하면, 스케일러블 프로토콜은 프로세서들 사이에서의 패킷들의 송신을 더 양호하게 관리할 수 있다.
예를 들어, 각각의 유형의 메모리 디바이스가 상이한 레이턴시를 가지기 때문에, 개별적인 메모리 디바이스들의 개별적인 레이턴시들에 기초하여 다양한 유형들의 메모리 디바이스들(14)과 호스트 SoC(12) 사이의 흐름 또는 버스 트래픽을 관리하는 것이 유익할 수 있다. 예로서, DRAM은 일반적으로 빠른 레이턴시들(예를 들어, 랜덤 요청으로부터 50ns)을 가지지만, 반면 NAND 디바이스들은 일반적으로 랜덤 요청 이후에 오류 정정을 갖는 느린 레이턴시들(예를 들어, 500us)을 갖는다. SRAM 버퍼는 10ns의 더 빠른 레이턴시를 갖는다. 이를 유념하면, 스케일러블 프로토콜은 각각의 메모리 디바이스에 대한 트랜잭션 윈도우를 지정할 수 있다. 일 실시예에 있어서, 스케일러블 프로토콜은 각각의 트랜잭션 윈도우를 지정하기 위하여 2개의 필드들을 사용할 수 있다: 48-비트 어드레스 및 3-비트 윈도우(즉, 윈도우들 0 내지 7을 어드레싱하는). 도 4는 패킷(30) 내의 트랜잭션 윈도우를 지정하는 2개의 필드들을 도시하는 블록도를 예시한다. 도 4에 도시된 바와 같이, 트랜잭션 윈도우 필드(42) 및 어드레스 윈도우 필드(44)는 페이로드 필드(34)의 부분일 수 있다. 트랜잭션 윈도우 필드(42)는 지정된 트랜잭션 윈도우를 명시할 수 있으며, 어드레스 윈도우 필드(44)는 명시된 트랜잭션 윈도우와 연관된 48-비트 어드레스를 명시할 수 있다. 48-비트 어드레스는 가상 채널(즉, 윈도우)에 할당된 가상 어드레스일 수 있다. 일 실시예에 있어서, 가상 어드레스 공간은 하드 디스크 드라이브 또는 어떤 다른 저장 디바이스 상에 위치된 물리적인 어드레스를 참조할 수 있다. 이와 같이, 메모리 디바이스는 물리적으로 이용가능한 것보다 더 많은 데이터를 저장하기 위한 능력을 가질 수 있다.
트랜잭션 윈도우 필드(42) 및 어드레스 윈도우 필드(44)에 더하여, 패킷은 시작 비트(46) 및 우회 레벨 필드(48)을 포함할 수 있다. 시작 비트(46)는 비트들 내에서 패킷들의 시작을 나타낼 수 있다. 우회 레벨 필드(48)는 페이로드 필드(34)의 부분일 수 있으며, 이는 개별적인 트랜잭션이 포함할 수 있는 우회 레벨들의 수를 나타내는 값을 제공할 수 있다. 시작 비트 필드(46) 및 우회 레벨 필드(48)에 관한 추가적인 세부사항들은 이하의 다른 섹션들에서 더 상세하게 논의될 것이다.
일반적으로, 각각의 유형의 메모리 디바이스는 상이한 트랜잭션 윈도우에 할당될 수 있다. 예들로서, DRAM0은 윈도우0 내에 할당될 수 있으며, DRAM1은 윈도우1 내에, DRAM2는 윈도우 2 내에, NAND0은 윈도우 3 내에, NAND1은 윈도우 4 내에, 그리고 SRAM 버퍼들 및 제어 레지스터들은 윈도우 7 내에 할당될 수 있다. 이를 유념하면, 트랜잭션들의 예시적인 세트는 다음의 시퀀스에 따라 전송될 수 있다:
(1) 판독.윈도우0.어드레스A
(2) 판독.윈도우3.어드레스B
(3) 판독.윈도우0.어드레스C
(4) 판독.윈도우0.어드레스D
(5) 판독.윈도우0.어드레스E
(6) 판독.윈도우0.어드레스F
(7) 판독.윈도우3.어드레스G
(8) 판독.윈도우0.어드레스H
(9) 판독.윈도우0.어드레스I
이상에서 보여진 바와 같이, 트랜잭션들 1, 3-6, 8, 및 9는 윈도우0의 부분이며, 이는 DRAM 메모리 디바이스에 대응한다. 반면, 트랜잭션들 2 및 7은 윈도우 3의 부분이며, 이는 NAND 메모리 디바이스에 대응한다. 이상의 요청들의 수신 시에, 수신 컴포넌트는, 각각의 트랜잭션에 대해 지정된 개별적인 트랜잭션 윈도우들에 따라 수립된 배열 규칙들을 사용하여 수신된 요청들에 응답할 수 있다. 이와 같이, 수신 컴포넌트는 송신 컴포넌트와 수신 컴포넌트 사이에 로컬 배열 프로토콜을 제공하기 위하여 트랜잭션 윈도우들을 사용할 수 있다.
일 실시예에 있어서, 특정 트랜잭션 윈도우에 대하여 지정된 배열 규칙들은 개별적인 트랜잭션 윈도우와 연관된 개별적인 레이턴시에 기초할 수 있다. 즉, 수신 컴포넌트는 더 긴 레이턴시들을 갖는 요청들에 응답하기 이전에 더 낮은 레이턴시들을 수반하는 요청들에 먼저 응답할 수 있다. 수신 컴포넌트가 각각의 트랜잭션 윈도우 사이의 레이턴시 차이들을 인식할 수 있기 때문에, 수신 컴포넌트는 그들의 윈도우 지정들에 따라 트랜잭션들을 수신하는 것을 결정할 수 있다. 이와 같이, 다시 이상에서 설명된 예시적인 트랜잭션들을 참조하면, 스케일러블 프로토콜을 구현하는 수신 컴포넌트는 다음과 같이 이상의 요청들에 응답할 수 있다:
(1) 데이터.윈도우0.어드레스A
(3) 데이터.윈도우0.어드레스C
(4) 데이터.윈도우0.어드레스D
(5) 데이터.윈도우0.어드레스E
(6) 데이터.윈도우0.어드레스F
(8) 데이터.윈도우0.어드레스H
(9) 데이터.윈도우0.어드레스I
(2) 데이터.윈도우3.어드레스B
(7) 데이터.윈도우3.어드레스G
이상에서 보여진 바와 같이, 수신 컴포넌트는 윈도우3의 더 높은 레이턴시 요청들에 응답하기 이전에 윈도우0의 저-레이턴시 요청들에 먼저 응답할 수 있다. 즉, 긴 레이턴시 요청들은 짧은 레이턴시 요청들보다 더 늦게 송신될 수 있다. 결과적으로, 요청들을 서비스하는 시스템 버스는, 필드에 요청 우선순위(REQUEST PRIORITY)를 부가하는 것과 같은 다양한 정교한 프로토콜 복잡화(complication)들을 부가하지 않으면서, 동일한 버스 상의 상이한 클래스들의 메모리의 존재에 의해 방해를 받지 않는다. 이러한 방식으로, 스케일러블 프로토콜은 상대적으로 간단한 방식으로 최소 수의 비트들을 사용하여 복합 시스템 동작을 제공한다.
다른 예에 있어서, 수신 컴포넌트는 각각의 트랜잭션에 대하여 지정된 대응하는 트랜잭션 윈도우에 기초하여 로컬 배열 기법을 이용할 수 있다. 다음의 트랜잭션에 대하여:
(1) 판독8b.윈도우1.어드레스A
(2) 판독8b.윈도우2.어드레스B
(3) 판독8b.윈도우1.어드레스C
수신 컴포넌트는 먼저 트랜잭션 (1)을 수신하고, 어드레스A가 이용가능한지 여부를 결정할 수 있다. 어드레스A가 사용중인 경우, 수신 컴포넌트는 트랜잭션 (1)을 큐(queue)에 저장하고, 어드레스A가 이용가능해지기를 기다릴 수 있다. 그러면, 그 동안, 수신 컴포넌트는 트랜잭션 (2)를 수신하고 어드레스B가 이용가능한 경우 판독 동작을 수행할 수 있다. 그런 다음 수신 컴포넌트는 트랜잭션 (1)과 동일한 윈도우와 연관되기 때문에 트랜잭션 (3)을 수신할 수 있으며, 이들이 동일한 트랜잭션 윈도우의 부분이기 때문에 수신 컴포넌트는 트랜잭션 (1) 이전에 트랜잭션 (3)을 수행하는 것과 관련하여 임의의 순서 충돌(ordering conflict)들이 존재하는지 여부를 결정할 수 있다. 동일한 방식으로, 수신 컴포넌트는, 이것이 상이한 트랜잭션 윈도우의 부분이기 때문에 트랜잭션 (2)와의 임의의 잠재적인 순서 충돌 또는 이와의 임의의 잠재적인 순서 충돌의 결정을 무시할 수 있다. 이와 같이, 트랜잭션 윈도우들은, 상이한 트랜잭션들이 수행되고 있는 동안 데이터 동작들이 수행되기 위한 더 효율적인 방식을 제공할 수 있다. 즉, 트랜잭션 윈도우들은 동작들이 연관된 동작들 또는 메모리 디바이스들과 논리적으로 그룹화되는 것을 허용하기 때문에, 동작들이 다양한 순서들로 수행될 수 있으며, 그럼으로써 트랜잭션들을 완료하기 위한 유연한 방식을 제공한다. 이에 반해서, 통상적인 프로토콜들은 전형적으로, 상이한 트랜잭션들이 다양한 순서들로 수행될 수 있는 경우에도 트랜잭션들이 전송되었던 순서에 따라 수행될 데이터 동작들의 엄격한 순서를 강제하거나 또는 전용 프로토콜 필드 내에서 전송된 우선순위 정보의 포함에 기초하여 트랜잭션들을 프로세싱할 수 있다.
일 실시예에 있어서, 스케일러블 프로토콜은 각각의 윈도우에 대하여 최소 트랜잭션 크기를 할당하기 위한 능력을 제공할 수 있다(예를 들어, 윈도우0.크기 = 8바이트, 윈도우3.크기=128B). 예를 들어, 윈도우0에 대한 최소 전송 크기가 8 바이트인 경우, 48b 어드레스 필드에 대하여, 윈도우0은 2
Figure 112016129283310-pct00001
48*8바이트 = ~2.25x1015 바이트들을 저장할 수 있다. 동일한 방식으로, 윈도우3에 대한 최소 전송 크기가 128 바이트인 경우, 윈도우3은~3.6x1016 바이트들을 지원할 수 있다. 이와 같이, 윈도우0 및 윈도우3 둘 모두는 어드레스 공간이 암시하는 것보다 상당히 더 많은 바이트들을 지원한다.
트랜잭션 윈도우와 연관된 다른 특징은, 프로토콜 내에서 추가적인 명령들을 생성하지 않고 시스템 제어 레지스터들 및 윈도우0 SRAM과 같은 다른 공간들에 대한 간단한 시스템-레벨 어드레스능력(addressability)을 포함한다. 즉, SRAM 및 시스템 제어 레지스터들은 간단하게 윈도우0을 사용함으로써 어드레스될 수 있다. 반면, 이전의 프로토콜들은 이러한 유형들의 메모리들과 상호작용하기 위하여 레지스터.판독 및 레지스터.기입과 같은 추가적인 명령들을 사용할 수 있다. 이러한 메모리 유형들에 대하여 지정된 트랜잭션 윈도우를 사용하면, 다른 메모리 디바이스들에 대해 사용되는 동일한 판독 및 기입 명령들이 또한 SRAM 및 시스템 제어 레지스터들에 대하여 사용될 수 있다. 즉, 판독 및 기입 명령들은 간단하게 적절한 윈도우를 지시할 수 있다. 이와 같이, 스케일러블 프로토콜은 더 적은 명령들을 이용할 수 있으며, 그럼으로써 프로토콜 내에서 사용되는 비트들의 수를 감소시킬 수 있다.
트랜잭션 유형들에 따라 데이터 트랜잭션들을 조직함으로써, 복수의 트랜잭션 윈도우들은 동일한 메모리 유형에 대한 복수의 액세스 방안들을 제공할 수 있다. 예를 들어, 전형적인 DDR3 DRAM은 8개의 뱅크(bank)들을 포함할 수 있으며, 내부 버스는 8개의 이러한 DRAM들을 포함할 수 있다. 이를 유념하면, 8개의 DRAM들은, 윈도우1이 8개의 DDR3 DRAM들의 그룹의 뱅크 0을 나타내고 윈도우2가 이러한 동일한 그룹의 뱅크 1에 대한 액세스를 제공할 수 있도록 조직될 수 있다. 이러한 방식으로, 각각의 윈도우는 각각의 DRAM의 특정한 가상 어드레스 공간을 지정할 수 있다. 이를 유념하면, 각기 페이지들, 뱅크들 및 랭크(rank)들을 가지고 락-스텝(lock-step) 동작으로 그룹화된 임의의 수의 DRAM들이 존재할 수 있기 때문에, 복수의 적절한 그룹화 방법들이 이용가능하다는 것이 명백하다. 동일한 방식으로, NAND들이 또한 페이지들, 평면들, 및 블록들을 가지고 그룹화될 수 있다. 또한, 다채널 디바이스들은 채널 및 그들의 다양한 집성(aggregation)들 마다 추가적으로 분리될 수 있다. 일반적으로, 그룹화 옵션들은 논리 칩 설계의 복잡도에 기초하여 결정될 수 있다.
복수의 가상 어드레스 공간들 및 가상 채널들을 갖는 복수의 트랜잭션 윈도우들을 지원함으로써, 스케일러블 프로토콜은, 상이한 레이턴시들을 갖는 메모리들을 포함하는 시스템 내에서 예측가능한 데이터 배열을 수립하기 위하여 트랜잭션 윈도우들을 사용할 수 있다. 결과적으로, 스케일러블 프로토콜은, 높은 우선순위 및 낮은 우선순위 요청들이 배열되는 방식이 지정된 명시적인 프로토콜 필드를 갖지 않고 높은 우선순위 및 낮은 우선순위 요청들을 지원할 수 있다.
전술된 것을 유념하면, 도 5는 메모리 디바이스(14)의 부분인 다양한 유형들의 메모리들에 대해 트랜잭션 윈도우들을 할당하기 위한 방법(50)의 순서도를 예시한다. 방법(50)이 특정한 순서로 도시되지만, 방법(50)은 임의의 적절한 순서로 수행될 수 있으며, 따라서 도면에 도시된 순서로 제한되지 않는다는 것을 주의해야만 한다. 추가적으로, 다음의 방법(50)의 설명은, 논의 목적들을 위하여 메모리 SoC(22)에 의해 수행되는 것으로서 설명될 것이다. 이와 같이, 다양한 유형들의 메모리들에 통신가능하게 결합된 임의의 적절한 프로세서가 방법(50)에서 설명되는 동작들을 수행할 수 있다.
이제 도 5를 참조하면, 블록(52)에서, 메모리 SoC(22)는, 레지스터들 또는 메모리 SoC(22) 자체 내에 저장된 다른 메모리 컴포넌트들로부터 초기화 신호를 수신할 수 있다. 일 실시예에 있어서, 초기화 신호는 기동 시에 또는 메모리 디바이스(14)가 처음으로 전력을 수신할 때 메모리 SoC(22)에 의해 수신될 수 있다.
블록(54)에서, 메모리 SoC(22)는, 액세스가 가능할 수 있는 메모리 유형들을 결정할 수 있다. 즉, 메모리 SoC(22)는 그것의 통신 레인들(예를 들어, 채널들(29))을 스캔(scan)하고, 메모리 SoC(22)에 통신가능하게 결합될 수 있는 메모리들의 상이한 유형들을 식별할 수 있다. 다시 도 2에 도시된 예시적인 메모리 디바이스(14)를 참조하면, 메모리 SoC(22)는, RLDRAM(26), DDR4(28), 및 NAND(24) 메모리 유형들이 메모리 SoC(22)에 결합된다는 것을 결정할 수 있다.
블록(56)에서, 메모리 SoC(22)는 블록(54)에서 식별된 메모리 유형들의 각각의 성능들을 결정할 수 있다. 메모리 유형들의 성능들은, 메모리 유형의 용량, 메모리 유형을 사용하는 판독 동작에 대하여 예상된 레이턴시, 메모리 유형을 사용하는 기입 동작에 대하여 예상된 레이턴시, 및 유사한 것을 포함할 수 있다. 메모리 SoC(22)에 의해 식별될 수 있는 트랜잭션 윈도우들을 할당하는데 사용하기 위한 다른 성능들은, 판독 레이턴시, 기입 레이턴시, 대역폭, 최소 판독 트랜잭션 크기, 최소 기입 트랜잭션 크기, 디바이스 사이클 시간, 제 위치 기입가능성(writeable) 여부, 바이트 기입 성능 여부, 및 유사한 것을 포함할 수 있다. 특정 실시예들에 있어서, 각각의 상이한 유형의 메모리는 성능들의 상이한 세트와 연관될 수 있다. 상이한 유형들의 메모리들과 성능들의 상이한 세트들 사이의 연관은, 메모리 SoC(22)의 레지스터 내에 저장될 수 있거나 또는 각각의 개별적인 메모리 유형에 의해 제공될 수 있다.
메모리 유형들의 성능들을 결정한 이후에, 블록(58)에서 시스템 SoC(22)는 블록(54)에서 식별된 각각의 메모리 유형의 개별적인 성능들에 기초하여 각각의 메모리 유형에 트랜잭션 윈도우를 할당할 수 있다. 일반적으로, 메모리 SoC(22)는 각각의 유사한 메모리 유형을 동일한 트랜잭션 윈도우에 할당할 수 있다. 즉, 각각의 유사한 메모리 유형이 유사한 성능들을 가지기 때문에, 메모리 SoC(22)는 그 메모리 유형을 동일한 트랜잭션 윈도우에 할당할 수 있다. 예를 들어, 다시 도 2의 예시적인 메모리 디바이스(14)를 참조하면, 메모리 SoC(22)는 2개의 DDR4(28) 메모리들을 동일한 트랜잭션 윈도우에 할당할 수 있으며, 이는 이들이 동일한 메모리 유형들이기 때문이다. 동일한 방식으로, 2개의 상이한 메모리 유형들이 특정한 수의 유사한 성능들을 갖는 경우, 메모리 SoC(22)는 또한 2개의 메모리 유형들을 동일한 트랜잭션 윈도우에 할당할 수 있다.
일 실시예에 있어서, 메모리 SoC(22)는 메모리 유형을 메모리 SoC(22)의 희망되는 동작들에 기초하여 대응하는 트랜잭션 윈도우에 할당할 수 있다. 예를 들어, 메모리 SoC(22)가 모든 판독 동작들이 적어도 특정한 레이턴시를 갖기를 희망하는 경우, 메모리 SoC(22)는 각각의 메모리 유형을 이러한 레이턴시 문턱값을 충족시키는 제 1 트랜잭션 윈도우 내에 또는 이러한 레이턴시 문턱값을 충족시키지 않는 제 2 트랜잭션 윈도우 내에 할당할 수 있다.
트랜잭션 윈도우를 각각의 식별된 메모리 유형에 할당한 이후에, 메모리 SoC(22)는, 각각의 트랜잭션 윈도우의 속성들을 저장 디바이스 내에 저장하는 블록(60)으로 진행할 수 있다. 저장 디바이스는 데이터를 저장할 수 있는 임의의 적절한 디바이스를 포함할 수 있다. 이와 같이, 저장 디바이스는, 로컬 레지스터, 테이블, 또는 어떤 다른 정보 저장 유닛을 포함할 수 있다. 이러한 방식으로, 메모리 SoC(22)는 이상에서 설명된 바와 같은 배열 규칙들에 따라서 각각의 메모리 유형에 대한 동작들을 수행할 수 있다. 일부 경우들에 있어서, 저장된 속성들은, 각각의 트랜잭션 윈도우의 동작에 관한 다른 관련 정보와 함께 각각의 트랜잭션 윈도우의 특정 성능들을 상세화할 수 있다.
우회 레벨들의 프로그램가능 수
이상에서 패킷(30)이 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 ECC 필드(36)을 갖는 것으로서 설명되었지만, 특정 실시예들에 있어서, 스케일러블 프로토콜은, 판독, 기입, 이동, 판독-수정-기입, 및 유사한 것과 같은 요청을 조절하기 위하여 패킷(30) 내에 다른 선택적인 필드들을 포함할 수 있다. 이러한 하나의 조절은, 요청에 적용되기 위한 우회 레벨들의 수를 나타내는 것을 포함한다.
우회 레벨들은, 요청과 요청되는 데이터 사이의 포인터(pointer)들의 수를 나타낼 수 있다. 컴퓨팅 시스템들 내에 이용가능한 엄청난 양의 데이터가 주어지면(예를 들어, 빅 데이터), 데이터는 흔히 복수의 테이블들을 통해 인덱싱되고 하나의 위치에 저장된다. 즉, 빅 데이터 시스템 내에서, 특정 데이터세트에 대한 요청은, 제 3 포인터를 지시할 수 있는 제 2 포인터(예를 들어, 링크 리스트)를 지시하는 포인터를 포함할 수 있는 등이다. 궁극적으로, 포인터 시퀀스 내의 마지막 포인터가 요청된 데이터세트의 어드레스를 지시할 수 있다. 각각의 포인터-대-포인터 링크는 우회 레벨로서 지칭될 수 있다. 각각의 우회 레벨을 통해 요청된 데이터세트를 식별하는 프로세스는 흔히 "포인터 추적"으로서 지칭된다.
요청 컴포넌트의 관점으로부터, 요청 컴포넌트는 처음에 제 1 포인터를 갖는 특정 데이터세트에 대한 요청을 전송할 수 있다. 제 1 포인터를 갖는 요청에 응답하여, 요청 컴포넌트는 제 2 포인터를 수신할 수 있다. 이와 같이, 그런 다음 요청 컴포넌트는 제 2 포인터를 가지고 특정 데이터세트에 대하여 제 2 요청을 전송할 수 있다. 이러한 프로세스는, 요청 컴포넌트가 특정 데이터세트를 수신할 때까지 계속될 수 있다. 따라서, 요청 버스(Q) 상의 트래픽은, 하나의 단일 초기 요청에 의해 요청된 데이터세트를 실제로 수신하기 전에 복수의 요청들을 수반할 수 있다.
다양한 우회 레벨 유형 요청과 관련된 버스 트래픽의 양을 감소시키기 위하여, 스케일러블 프로토콜은 스케일러블 프로토콜을 구현하는 애플리케이션-특정 집적 회로(application-specific integrated circuit; ASIC), 메모리 SoC(22), 호스트 SoC(12), 또는 유사한 것의 설계 내에 요청된 데이터를 실제로 수신하기 이전에 요청 컴포넌트가 수신할 수 있는 포인터들 수의 표시를 명시할 수 있다. 이와 같이, 스케일러블 프로토콜을 구현하는 메모리 시스템은 원본 요청과 데이터의 위치 사이의 포인터 체인을 식별할 수 있으며, 요청 컴포넌트의 초기 요청에 기초하여 요청된 데이터에 대한 요청을 서비스할 수 있다. 즉, 요청 컴포넌트로부터 임의의 수의 우회 레벨들을 수반하는 하나의 요청은, 요청된 데이터를 포함하는 단지 하나의 응답을 수신하는 것을 야기할 수 있다.
이를 유념하면, 우회 레벨들의 수를 나타내는 선택적인 필드는 2 비트들을 포함할 수 있다. 일 실시예에 있어서, 2진수 00은, 우회 레벨이 없다는 것을 나타내거나 또는 요청 내에 제공된 어드레스가 의도된 피연산자(operand)의 실제 어드레스라는 것을 나타낼 수 있다. 2진수 01은, 1 레벨의 우회를 나타내거나 또는 요청 내의 어드레스에 의해 지정된 위치에서의 데이터가 실제로 포인터의 어드레스(예를 들어, 최종 어드레스)이고 의도된 피연산자 어드레스가 그 포인터 내에 포함된다는 것을 나타낼 수 있다. 예를 들어, 1 레벨의 우회를 갖는 판독 요청에 있어서, 요청 컴포넌트에 의해 수행되는 실제 기능은 먼저 그 요청 내에 포함된 어드레스의 컨텐츠를 판독하는 것을 포함할 수 있다. 이러한 예에 있어서, 어드레스의 컨텐츠는 어드레스2일 수 있다. 그런 다음, 스케일러블 프로토콜을 구현하는 메모리 시스템은 어드레스2의 메모리 위치에서의 컨텐츠를 판독할 수 있으며, 어드레스2의 메모리 위치의 컨텐츠가 판독 요청의 결과로서 공급된다.
동일한 방식으로, 2진수 10은 2 레벨들의 우회를 나타낼 수 있다. 여기에서, 공급되는 어드레스는 포인터일 수 있는 어드레스2를 지시할 수 있다. 즉, 어드레스2는 어드레스3을 지시하는 포인터를 포함할 수 있다. 그런 다음, 어드레스3에서의 데이터 컨텐츠는 판독 요청의 결과로서 요청 컴포넌트로 공급될 수 있다.
2진수 11은 3 레벨들의 우회를 나타낼 수 있다. 이와 같이, 공급된 어드레스는 어드레스 2를 지시할 수 있으며, 이는 어드레스3을 지시할 수 있고, 이는 데이터 컨텐츠를 포함할 수 있는 어드레스4를 지시할 수 있다. 스케일러블 프로토콜을 구현하는 메모리 시스템은 판독 요청의 결과로서 데이터 컨텐츠를 요청 컴포넌트에 제공할 수 있다.
기입 요청의 경우에 있어서, 스케일러블 프로토콜을 구현하는 메모리 시스템에 의해 수행되는 프로세스는 설명된 판독 예와 동일할 수 있다. 예를 들어, 우회 레벨 필드가 2진수 11로 설정되면, 메모리 시스템은 먼저 기입 요청의 어드레스(예를 들어, 어드레스2)를 판독함으로써 기입 요청을 수행할 수 있다. 우회 레벨 필드가 11이라는 것을 알기 때문에, 메모리 시스템은 계속해서 어드레스3을 나타낼 수 있는 어드레스2의 컨텐츠를 판독할 수 있다. 그런 다음, 메모리 시스템은 어드레스4를 나타낼 수 있는 어드레스3의 컨텐츠를 판독할 수 있다. 그런 다음, 메모리 시스템은 기입 요청의 데이터를 어드레스4의 메모리 내에 기입할 수 있다. 이와 같이, 이러한 예에 있어서, 기입 요청은 기입 이전에 3회의 판독들을 포함할 수 있지만, 3회의 판독들의 각각이 단일 기입 요청에 의해 개시되었다. 우회 필드가 2개의 비트들을 갖는 것으로서 설명되었지만, 우회 필드가 임의의 수의 우회 레벨들을 나타내기 위하여 임의의 수의 비트들을 포함할 수 있다는 것을 주의해야만 한다.
이상에서 언급된 바와 같이, 우회 레벨들은, 도 4에 예시된 바와 같이 페이로드 필드(34)의 우회 레벨 필드(48) 내에 명시될 수 있다. 우회 레벨 필드(48) 내에 명시된 우회 레벨들의 수는, 시스템이 메모리 위치의 컨텐츠를 검색할 때 경험할 것으로 예상할 수 있는 우회 레벨들의 수에 대응한다.
일 실시예에 있어서, 우회 레벨 필드(48)에 의해 사용되는 비트들의 수(예를 들어, 크기)는 호스트 SoC(12)에 의해 제공된 선호사항에 기초하여 결정될 수 있다. 예를 들어, 기동 시에, 호스트 SoC(12)는 메모리 SoC(22)를 발견하고, 메모리 SoC(22)가 본원에서 설명되는 스케일러블 프로토콜을 사용하여 동작한다는 것을 결정할 수 있다. 이와 같이, 호스트 SoC(12)는, 그것의 성능을 손상시키지 않으면서 수용할 수 있는 우회 레벨들의 최대 수를 결정할 수 있다. 우회 레벨들의 최대 수는 호스트 SoC(12)의 기입 및/또는 판독 레이턴시들 또는 호스트 SoC(12)의 다른 동작 파라미터들에 기초하여 결정될 수 있다. 예를 들어, 호스트 SoC(12)가 우회 레벨들의 최대 수가 3이라고 결정한 경우, 이것은 우회 레벨 필드(48)에 대하여 2-비트 필드를 사용하도록 메모리 SoC(22)에 지시할 수 있다. 일부 예들에 있어서, 호스트 SoC(12)는 우회 레벨들의 임의의 수를 수반하는 동작들과 관련된 선호사항을 갖지 않을 수도 있다. 이러한 경우에 있어서, 호스트 SoC(12)는 메모리 SoC(22)에 우회 레벨 필드(48)를 포함하지 않도록 지시할 수 있다.
송신될 패킷(30)을 준비할 때, 메모리 SoC(22)는 송신될 패킷(30)에 대한 원인을 결정할 수 있다. 이와 같이, 메모리 SoC(22)는 패킷(30)의 전송을 위해 어떤 소프트웨어 명령이 사용되었는지를 결정할 수 있다. 패킷을 생성하는 소프트웨어 명령은, 예를 들어, 포인터의 포인터를 룩업하기 위한 명령에 대응할 수 있다. 메모리 SoC(22)는 이러한 명령을 2 레벨들의 우회를 갖는 것으로서 해석할 수 있으며, 따라서 송신을 위해 패킷(30)을 준비할 때 우회 레벨 필드(48) 내에 10의 2진수 값을 제공할 수 있다.
우회 레벨들은 다양한 유형들의 동작들에 대하여 유용할 수 있다. 예로서, 임의적인 차원들의 어레이들은, 요청 컴포넌트들이 개별적인 버스에 불필요한 트래픽을 부가하지 않고 그들의 개별적인 요청들의 컨텐츠를 식별하는 것을 보조하기 위하여 우회 레벨들을 사용할 수 있다. 예를 들어, 3-차원 어레이는 데이터를 액세스하기 위하여 3개의 포인터들을 사용할 수 있다. 일부 정의된 구조들의 기록들이 포인터들을 사용할 수 있다. 이러한 기록의 일 예는, 리스트 내의 모든 구조에 대한 헤드(head) 및 테일(tail) 포인터를 갖는 링크 리스트들을 포함할 수 있다. 링크된 리스트들에 대하여, 우회 레벨들의 추상화는 링크 리스트의 파싱(parsing)이 더 효율적으로 일어나는 것을 가능하게 할 수 있다. 즉, 시작할 어드레스 및, 요청된 데이터가 리스트의 제 8 엘러먼트인 목적지에 위치된다는 것 또는 8 레벨들의 우회를 수반한다는 것을 앎으로써, 메모리 시스템은 요청 컴포넌트에 의해 제공된 단일 요청을 사용하여 리스트의 제 8 엘러먼트 또는 요청된 데이터를 검색할 수 있다. 여기에서, 메모리 시스템은 요청된 데이터의 위치를 결정하기 위하여 8 레벨들의 우회의 각각을 파싱할 수 있다. 요청된 데이터의 위치를 식별하면, 메모리 시스템은 요청 컴포넌트에 요청된 데이터를 제공할 수 있으며, 따라서 버스 트래픽을 요청 컴포넌트로부터의 하나의 요청 및 요청된 데이터의 위치로부터의 하나의 응답으로 제한할 수 있다.
수신된 패킷들의 부정 수신확인(Not Acknowledging)
버스 트래픽을 감소시키기 위한 다른 기술은 수신된 패킷들을 부정 수신확인하는 것을 포함할 수 있다. 즉, 통상적인 프로토콜들에 있어서, 수신 컴포넌트에 의해 수신된 각각의 패킷은 송신 컴포넌트로 다시 수신확인 패킷을 전송할 수 있다. 송신된 패킷들의 대부분이 대응하는 수신 컴포넌트에 의해 수신되기 때문에, 수신확인 패킷들을 전송하는 것은 많은 이점들을 제공하지 않으면서 개별적인 버스 상의 트래픽을 증가시킬 수 있다.
예를 들어, 수신확인 비트가 하나하나의 성공적인 패킷 수신에 응답하여 전송되는 경우, 송신들이 초고속 인터페이스들에서 일반적인 1e-12의 비트 오류 레이트(Bit Error Rate; BER)를 갖는 것을 고려하면, 많은 수의 불필요한 비트들이 각각의 패킷이 수신되었다는 것을 나타내기 위하여 송신된다. 이를 유념하고, 평균 패킷이 100 비트들을 포함하며 평균 패킷 오류 레이트가 약 1e-10이라고 가정하면, 수신 컴포넌트는 1x1010개 패킷들에 대한 성공을 나타내는 수신확인 비트 및 오류를 나타내는 1개의 패킷을 송신할 수 있다. 실제로, 수신 컴포넌트는 하나의 오류를 나타내기 위하여 약 1x1010개의 비트들을 전송했을 수 있다.
버스 내에서 흐르는 비트들의 양을 감소시키기 위하여, 수신 컴포넌트는 수신된 매 패킷에 대하여 수신확인 패킷을 전송하지 않을 수 있다. 그 대신, 송신 컴포넌트는, 수신 컴포넌트에 의해 달리 통지되지 않는 한 전송된 패킷이 수신되었다고 가정할 수 있다. 각각의 수신된 패킷에 대하여 수신확인 패킷들을 전송하지 않는 것의 예들이 도 6 및 도 7에 예시된다. 도 6을 참조하면, 요청 버스(Q)는 2 킬로바이트들의 판독 요청을 전송할 수 있다. 판독 요청을 수신하면, 응답 버스(S)는, 2KB 메시지가 판독될 준비가 되었다는 것을 나타내는 패킷을 송신할 수 있다. 그럼 다음, 요청 버스(Q)는, 응답 버스(S)가 요청된 데이터를 상이한 패킷들로 전송하게끔 할 수 있는 판독 요청을 재송신할 수 있다. 도 6에 도시된 바와 같이, 데이터의 각각의 패킷의 수신 시에, 요청 버스(Q)는 패킷이 성공적으로 수신되었다는 것을 나타내는 수신확인 패킷을 전송하지 않는다. 여기에서, 요청 버스(Q)는 고 레이턴시 판독 동작들을 가지고 동작할 수 있기 때문에, 응답 버스(S)는 동작들을 위한 2개의 스테이지들을 포함할 수 있다. 즉, 응답 버스(S)는 메시지가 준비되었다는 것을 나타낼 수 있으며, 그런 다음 응답 버스(S)가 판독 요청과 관련된 대응하는 데이터를 전송할 수 있다.
동일한 방식으로, 고 레이턴시 직접 메모리 액세스 서브시스템들은 다양한 기입 동작들에 대하여 1 스테이지 응답을 이용할 수 있다. 예를 들어, 도 7은, 판독-수정-기입 요청이 요청 버스(Q) 상에서 송신되고 판독-수정-기입 요청이 완료되었다는 메시지로 응답되는 일 예를 예시한다.
전술한 것을 유념하면, 수신 컴포넌트는 오류들을 갖는 패킷들을 계속해서 수신할 수 있다. 이와 같이, 수신 컴포넌트는 부정_수신확인(NOT_ACKNOWLEDGE) 패킷을 송신 컴포넌트에 전송함으로써, 패킷이 수신되지 않았다는 것 또는 수신된 패킷이 오류를 포함한다는 것을 송신 컴포넌트에 통지할 수 있다. 전송된 패킷이 수신되지 않았다는 것을 나타내는 것에 더하여, 부정_수신확인 패킷은 가장 최근의 양호한 것으로 알려진(known-to-be-good) 버스 트랜잭션을 나타낼 수 있다. 이와 같이, ECC 서브시스템을 통해 오류가 검출될 때, 오류를 갖는 패킷은 재-송신되어야만 한다. 수신 컴포넌트는, 재송신이 발생할 수 있도록 기준으로서 가장 최근의 성공적인 버스 트랜잭션을 송신 컴포넌트에 식별시킬(identity) 수 있다.
특정 실시예들에 있어서, 스케일러블 프로토콜은, 송신 컴포넌트에 최근의 양호한 것으로 알려진 버스 트랜잭션의 신원을 나타내기 위하여 4개의 관련 필드들을 사용할 수 있다. 관련 필드들은, 윈도우, 어드레스, 트랜잭션, 및 선택적인 데이터 시퀀스 번호를 포함한다. 이러한 4개의 필드들은 시스템 내의 임의의 요청/응답을 식별할 수 있다. 특정 실시예들에 있어서, 추가적인 ECC 필드가 송신에서의 오류를 검출하기 위하여 사용될 수 있다(예를 들어, 이하에서 더 상세하게 설명될 바와 같은, HD6 코드로서도 알려진, 송신 패킷 들 내의 1, 2, 3, 4, 또는 5개의 랜덤 오류들의 존재를 검출하도록 보장된 코드).
오류의 검출 시에, 수신 컴포넌트는 부정_수신확인 메시지를 송신 컴포넌트로 전송할 수 있다. 이러한 패킷의 크기는 다수의 가능한 패킷 크기들일 수 있다. 예를 들어, 부정_수신확인 메시지는, 합계 67 비트들에 대하여, 4-비트 트랜잭션 유형, 3-비트 윈도우, 48-비트 어드레스, 7-비트 데이터 시퀀스 번호, 및 5-비트 원본 트랜잭션 유형일 수 있다. 그런 다음 15-비트 ECC 필드가 부가될 수 있으며, 그럼으로써 총 82 비트들을 야기한다. 다시 이상의 예를 참조하면, 82 비트들은 1x1010개의 패킷들 내의 하나의 오류를 나타내기 위하여 전송되는 1x1010 비트들보다 훨씬 더 낮으며, 따라서 이는 어드레스 오류 패킷들을 나타내기 위한 더 효율적인 방식이다. 이상에서 언급된 데이터 시퀀스 번호가 오류가 있는 패킷을 식별할 수 있다는 것을 주의해야만 한다. 데이터 시퀀스 번호 및 이를 생성하는 방법에 관한 추가적인 세부사항들은 도 12 내지 도 14를 참조하여 이하에서 논의될 것이다.
시스템 내에서 오류의 검출 시에, 송신기 컴포넌트는 데이터를 재송신해야만 한다. 그러나, 오류를 검출함에 있어서 어떤 레이턴시가 존재하기 때문에, 송신 컴포넌트는, 수신 컴포넌트가 수신된 패킷 내에 오류가 존재한다는 것을 결정하기 이전에 다른 패킷들을 이미 전송했을 수 있다. 스케일러블 프로토콜이 이상에서 설명된 데이터 패킹 기술들을 사용하여 전송된 가변 패킷 크기들을 포함하기 때문에, 이전의 송신 오류는 수신 컴포넌트가 잘못된 패킷 길이를 갖는 것을 초래할 수 있으며, 그에 따라 오류를 포함하는 패킷 이후의 매 데이터 패킷을 잘못 해석하게끔 할 수 있다. 이와 같이, 수신 컴포넌트는, 수신 컴포넌트에 대한 가장 최근의 양호한 것으로서 알려진 버스 트랜잭션의 신원을 송신 컴포넌트로 표시할 수 있다. 그런 다음, 송신 컴포넌트 및 수신 컴포넌트는 오류가 있는 패킷이 수신되었던 지점으로 복귀할 수 있으며, 잠재적으로 오류가 있는 패킷 및 그 이후의 패킷들에 대하여 임의의 액션이 발생하는 것을 방지할 수 있다.
마지막의 양호한 것으로 알려진 버스 트랜잭션을 기준으로 하는 이러한 규칙에 기인하여, 수신 컴포넌트는 실제로 재송신이 일어날 수 있는 정확한 지점을 송신 컴포넌트에 표시할 수 있다. 그러나, 수신 컴포넌트는, 양호한 트랜잭션이 존재하지 않을 때의 이상의 규칙에 대한 하나의 예외를 통합할 수 있다(예를 들어, 기동 또는 리셋이 성공적이지 않았기 때문에 제 1 트랜잭션). 이러한 경우에 있어서, 수신 컴포넌트는 모드 필드들을 0들로 채울 수 있으며, 그 결과 시스템의 모든 엘러먼트들은 0들의 필드를 "제 1 트랜잭션"으로서 해석할 것이다.
이상에서 언급된 바와 같이, 스케일러블 프로토콜은 선택적인 데이터 시퀀스 번호 필드를 포함할 수 있다. 이러한 필드는, 프로토콜에 의해 지원되는 최대 응답 패킷보다 더 크게 희망되는 트랜잭션들을 지원할 수 있다. 예를 들어, 윈도우 내의 최소 트랜잭션이 128 바이트이고, 트랜잭션의 크기를 지시하는 다른 필드, 소위 크기를 고려하면, 총 트랜잭션 크기는 2
Figure 112016129283310-pct00002
크기*windowMinTransactionSize으로서 결정될 수 있다. 크기가 3-비트 필드인 경우, 최대 트랜잭션은 2
Figure 112016129283310-pct00003
7 * 128 = 16,384 바이트들일 수 있다. 임의의 버스가 하나의 요청에 의해 너무 오래 사용되는 것을 방지하기 위하여, 프로토콜에 의해 지원되는 최대 단일 패킷은 데이터의 128B일 수 있다. 따라서, 16,384 바이트 트랜잭션은 각기 128B의 128개의 데이터 패킷들에 의해 충족될 수 있다. 일 실시예에 있어서, 선택적인 데이터 시퀀스 번호 필드는, 이러한 128개의 데이터 패킷들 중 임의의 하나를 참조하는 7 비트들을 포함할 수 있다. 이러한 방식으로, 부정_수신확인 메시지가 발행되는 경우, 부정_수신확인 메시지는 송신이 실패하게 된 정확한 지점을 정확하게 식별할 수 있다. 다른 실시예에 있어서, 트랜잭션크기 0 내지 15에 대하여, 8B의 최소 트랜잭션크기는, 하위 말단 상의 보존 비트(conserve bit)들에 대한 2N 바이트와는 대조적으로, 8 바이트, 16 바이트, 32 바이트, 48 바이트, 64 바이트, 80 바이트, 96 바이트, 112 바이트, 및 128 바이트일 수 있다.
데이터 패킹
전술한 것을 유념하면, 유연한 통신 버스들을 제공하기 위하여, 스케일러블 프로토콜은 임의의 유형의 버스 통신을 사용하여 패킷들을 송신할 때 데이터 패킹 기술들을 이용할 수 있다. 일반적으로, 패킷 크기들이 전송되고 있는 요청 또는 응답, 전송되고 있는 데이터, 요청되고 있는 동작들, 등의 유형에 기초하여 결정되기 때문에, 패킷들에 대한 더 많은 세부사항들을 알기 이전에 어떤 유형의 데이터 채널들이 사용될지를 예상하는 것이 어려울 수 있다. 이와 같이, 스케일러블 프로토콜은, 통상적인 프로토콜에 의해 이루어지는 바와 같이 각각의 개별적인 패킷에 0들을 패딩하지 않고 송신되는 데이터 패킷들을 함께 패킹함으로써 이용가능한 채널들의 사용을 최대화하도록 설계될 수 있다. 본원에서 사용되는 바와 같은 용어 "패딩하지 않고"는, 데이터 패킷들의 송신 사이에 0들(즉, 0의 값을 갖는 비트들)이 개별적인 채널에 걸쳐 송신되지 않는다는 것을 의미한다. 그 대신, 송신될 준비가 된 다음의 스케줄링된(scheduled) 패킷이 이전의 패킷이 송신된 이후에 즉시 클럭 사이클 상에서 송신될 것이다.
예를 들어, 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인 경우, 통상적인 프로토콜은 이들과 연관된 단편(fractional)을 갖는 값들을 패딩할 수 있다. 즉, 통상적인 프로토콜은, Q 버스 상의 점유의 크기들이 각기 5, 8, 10, 14, 15, 15, 20, 21, 22, 33, 37, 59, 66, 106, 111, 및 123이 되도록, 각각의 단편 값의 나머지 부분에 0들을 부가할 수 있다. 일부 경우들에 있어서, 9개의 0들이 송신에 부가될 수 있으며, 이는, 송신되는 0들이 실제로 송신되는 데이터를 나타내지 않기 때문에 전체 버스 사용 효율에 부정적인 영향을 줄 수 있다. 이러한 방식으로, 이러한 0들은 정보를 운반하지 않으면서 버스를 사용하고, 그럼으로써 버스 사용 효율을 감소시킨다.
일 실시예에 있어서, 송신되는 데이터를 패딩하는 대신에, 스케일러블 프로토콜은 요청들이 함께 패킹되는 것을 가능하게 할 수 있다. 따라서, 버스 신호는 패딩된 0들이 없는 상태로 남겨진다. 예를 들어, 도 8은 스케일러블 프로토콜이 2개의 18-비트 요청들을 함께 패킹하는 레인 패킹 예(61)를 예시한다. 도 8을 참조하면, 스케일러블 프로토콜은 송신들을 비트들 대신에 심볼들로서 간주할 수 있다. 도 8의 예에 있어서, 하나의 비트는 하나의 심볼을 나타낼 수 있다. 도 8에서 버스(62)가 (즉, 하나의 플리트 내에서 12 비트들을 송신할 수 있는) 12개의 레인들을 포함하기 때문에, 스케일러블 프로토콜은 요청들을 함께 패킹함으로써 2개의 18-비트 요청들을 송신할 수 있다. 즉, 제 2 18-비트 요청(66)이 제 1 18-비트 요청(64) 이후에 바로 송신될 수 있다. 이와 같이, 송신 버스는 낭비되는 비트들(예를 들어, 패딩된 0들)을 포함하지 않는다.
특정 실시예들에 있어서, 수신 컴포넌트가 패킹된 레인 내에서 새로운 패킷의 시작을 식별할 수 있다는 것을 보장하기 위하여, 송신 컴포넌트는 시작 비트를 가지고 각각의 새로운 패킷(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)는 먼저 패킷(30)을 인코딩하기 위해 사용할 적절한 오류 제어 코드(ECC) 알고리즘을 결정할 수 있다. 일 실시예에 있어서, 송신을 요청하는 소프트웨어 애플리케이션이 알고리즘 사용할 ECC 알고리즘을 지정할 수 있다. 대안적으로, 호스트 SoC(12) 또는 메모리 SoC(22)가 송신되고 수신되는 패킷들의 전부를 인코딩하고 디코딩하기 위하여 사용될 특정 ECC 알고리즘을 지정할 수 있다. 어느 경우에든지, 패킷(30)에 대한 ECC 값은, 트랜잭션 유형 필드(32) 및 페이로드 필드(34) 내에 제공된 비트들에 기초하여 결정될 수 있다.
이상에서 언급된 트랜잭션 유형, 트랜잭션 윈도우, 우회 레벨들의 수, 및 ECC 값을 나타내는 비트 값들을 결정한 이후에, 블록(82)에서, 메모리 SoC(22)는 블록들(72, 74, 76, 및 80)에서 결정된 값들에 따라 패킷(30)을 생성할 수 있다. 패킷(30)을 생성할 때, 메모리 SoC(22)는 처음에 새로운 패킷이 송신되고 있다는 것을 수신 컴포넌트에 나타내기 위하여 시작 비트 필드(46)에 대하여 1을 제공할 수 있다. 시작 비트 필드(46)에 1을 삽입한 이후에, 메모리 SoC(22)는 트랜잭션 유형 필드(32)에 블록(74)에서 식별된 트랜잭션 유형을 나타내는 값을 제공할 수 있다.
그런 다음, 메모리 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)는 패킹된 레인 기법에 따라 패킷들을 송신할 수 있으며, 이는 버스의 레인들의 전부가 사용되지는 않을 때 버스 상에 0들을 패딩하는 것을 수반하지 않는다.
패킹된 레인 기법에 따라 패킷들이 송신될 수 있는 방법을 더 양호하게 예시하기 위하여, 도 10은 본원에서 설명되는 패킹된 레인 기법에 따라 송신될 수 있는 복수의 패킷들을 예시한다. 도 10에 도시된 바와 같이, 버스(62) 상에서 송신되는 제 1 패킷(92)은, 시작 비트(1), 트랜잭션 유형 필드(32)에 대한 5 비트들, 페이로드 필드(34)에 대한 45 비트들, 및 ECC 필드(36)에 대한 6 비트들을 포함한다. 제 1 패킷(94)이 송신된 바로 이후에, 제 2 패킷(94)이 버스(62) 상에서 송신된다. 이와 같이, 제 1 패킷(92)의 ECC 필드(36)의 마지막 비트 바로 이후에, 비트 시간 3에서의 비트 레인 9 내에, 시작 비트(1)가 존재한다. 또한, 나머지 비트 레인들(즉, 비트 레인들 10-15)은 제 2 패킷(94)과 연관된 데이터를 포함한다.
다른 송신 기법들과 대조적으로, 버스(62)의 비트 레인들 중 어떤 것도 0들로 패딩되지 않거나 또는 패킷의 송신을 위해 사용되지 않지 않는다. 즉, 다른 송신 기법들에 있어서, 제 1 패킷(92)이 이용가능한 16개 중 단지 9개의 비트 레인들만을 점유하였기 때문에, 나머지 비트 레인들(즉, 비트 레인들 10-15)이 0들로 패딩될 것이며, 제 2 패킷(94)은 비트 시간 4에서 송신되기 시작할 것이다. 이러한 방식으로, 메모리 SoC(22)는 패킷들을 전송하기 위하여 사용되는 버스의 효율을 최대화할 수 있다.
그렇지만, 메모리 SoC(22)가 여전히 패킷들을 전송하는 것 사이에서 0들을 송신할 수 있는 경우들이 존재한다는 것을 주의해야만 한다. 예를 들어, 다시 도 9의 블록(86)을 참조하면, 다음 패킷이 송신을 위하여 준비되지 않은 경우, 메모리 SoC(22)는 블록(88)으로 진행하고, 다음의 이용가능한 비트 레인 내에서 0을 송신할 수 있다. 즉, 버스(62)가 연속적으로 동작하기 때문에, 메모리 SoC(22)가 버스(62)를 지연시키지 못할 수 있으며, 그에 따라서 다음 패킷이 송신을 위해 준비될 때까지 버스(62) 상에서 0들을 송신할 수 있다. 이와 같이, 메모리 SoC(22)가 다음의 이용가능한 비트 레인에서 버스를 따라 0을 송신한 이후에, 메모리 SoC(22)는 블록(86)으로 복귀하고 다시 다음 패킷이 송신을 위해 준비되었는지 여부를 결정할 수 있다. 이러한 시나리오가 또한 도 10에 예시된다.
다시 도 10을 참조하면, 제 2 패킷(94)이 송신된 이후에, 메모리 SoC(22)는 송신을 위해 준비된 다른 패킷을 갖지 않을 수 있다. 이와 같이, 비트 시간 8에서, 메모리 SoC(22)는 제 3 패킷(96)이 송신을 위해 준비될 때까지 0들을 송신하는 것을 시작할 수 있다. 이와 같이, 메모리 SoC(22)는, 비트 시간 9에서 제 3 패킷(96)이 송신을 위하여 준비될 때까지 비트 시간 8에서 비트 레인들 6-15 상에서 0들을 송신할 수 있다. 수신 컴포넌트가 버스 내에 패딩된 0들을 데이터로서 잘못 해석하지 않을 수 있다는 것을 보장하기 위하여, 수신 컴포넌트는 메모리 SoC(22)로부터 비트들을 연속적으로 수신하고, 다음 패킷 중 하나 또는 시작 비트를 수신한 이후에 유효 패킷이 송신된다는 것을 결정할 수 있다.
특정 실시예들에 있어서, 다른 패킷이 송신을 위하여 준비되지 않은 경우, 메모리 SoC(22)는 다음 패킷이 송신을 위해 준비될 때까지 버스(62)의 전원을 차단할 수 있다. 이러한 경우에 있어서, 메모리 SoC(22)는, 버스(62)가 패킷들을 송신하기 위하여 사용되지 않을 때 버스(62)에 전력을 공급하기 위하여 사용되는 에너지를 보존할 수 있다.
레인-패킹 기법을 사용하여 패킷들을 송신하는 것의 효율을 예시하기 위하여, 다음의 예가 제공된다. 10-레인 버스 상의 송신 시퀀스는 다음의 버스 활동을 포함할 수 있다: 73 비트들, 그 다음 652 비트들, 그 다음 73 비트들, 그 다음 652 비트들. 4개의 요청들의 이러한 그룹은 총 1450 비트들을 포함하며, 이는 낭비되는 비트들 없이 버스 상에 정확히 (공식적으로 유닛 간격들 또는 UI로 지칭되는) 145개의 신호 간격들을 포함한다. UI는 특정한 수의 비트들을 포함하는 데이터의 1 클럭형 그룹(clocked group)을 나타낼 수 있다. 예를 들어, 8-비트 버스 또는 8-레인 링크 상에서, 8-레인 링크를 통해 송신되는 데이터의 하나의 플리트는 하나의 플리트에 대응할 수 있다. 그러면, 하나의 플리트는 데이터의 8 비트들을 포함하는 하나의 UI로서 지칭될 수 있다. 이와 같이, UI는 버스가 사용되는 효율을 평가하기 위해 사용될 수 있다. 즉, 패킷의 UI 점유는, 8b의 버스 폭으로 (시작비트, 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 ECC 필드(36)를 포함하는) 패킷 비트 카운트들을 나눔으로써 계산된다. 이와 같이, 8-레인 링크가 데이터의 6 비트들을 전송하기 위해 사용되는 경우, UI는 0.75(6/8)이다.
전술한 것을 유념하면, 이하에서 제공되는 예는, 다음의 조건들이 존재한다고 가정한다: ECC 해밍(Hamming) 거리 3, 트랜잭션 유형 필드(32)는 요청 버스(Q) 및 응답 버스(S) 둘 모두 상에 5 비트들을 포함하며, 데이터시퀀스번호는 7 비트들이고, 8-비트 유닛 크기, 4-비트 트랜잭션크기, 3-비트 윈도우, 48-비트 어드레스, 2-비트 우회레벨들, 24-비트 RMW오피코드+데이터, 4-비트 메시지 유형. 이러한 사이징(sizing) 가정들을 가지면, 응답 버스(S) 상에서 나타날 수 있는 11개의 샘플 트랜잭션 유형들은, 79b, 83b, 144b, 273b, 401b, 530b, 658b, 786b, 914b, 1043b 및 2067b의 패킷 크기들을 포함할 수 있다. 이러한 패킷 크기들은 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 ECC 필드(36)를 포함하지만, 이상에서 언급된 시작비트를 배제한다. 통상적인 8b 버스에 있어서, 0 패딩들이 각각의 패킷을 균일한 8b 경계까지 데려가기 위하여 부가될 것이며, 어떠한 시작비트도 요구되지 않을 것이다. 이와 같이, 0 패딩들을 부가한 이후에 이러한 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 비트들의 제 1 패킷에 대하여, 하나의 0이 패킷의 마지막 8 비트들 상에 패딩될 것이며, 그 결과 10개의 8-레인 링크들이 79-비트 패킷을 전송하기 위하여 이용될 것이다.
그러나, 시작비트를 부가하는 것 및 응답들을 함께 패킹하는 것과 같은 본원에서 개시되는 기술들을 사용하면, 동일한 패킷들을 송신하기 위해 사용되는 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.5 UI이며, 따라서 비트 절감들은 레인들의 수가 증가됨에 따라 증가한다. 이러한 예는, 그들이 2개의 버스들 상에서 동일하거나 또는 동일하지 않은 폭들이던지, 요청 버스(Q) 또는 응답 버스(S)의 임의의 폭을 나타낸다. 스케일러블 프로토콜이 이상에서 설명된 바와 같이 레인들을 패킹하는 것을 가능하게 하기 위하여, 호스트 SoC(12) 또는 임의의 다른 수신기는 다음의 송신/수신 기법을 사용할 수 있다: 패킷(30)을 수신하고, 트랜잭션 유형, 페이로드의 크기, 및 패킷(30) 내의 ECC 필드(36)의 위치를 식별하기 위하여 패킷(30)의 컨텐츠를 파싱하며, ECC에 기초하여 패킷(30)의 정확성을 검증하고, 그런 다음 확신을 가지고 송신에 따라 행동한다.
이러한 방식으로, 수신된 송신 패킷은, 그것의 컨텐츠가 파싱되기 이전에 그 전체가 수신기 버퍼(예를 들어, 버퍼(23)) 내에 캡처될 수 있다. 또한, 수신기는, 패킷이 무-오류로서 검증되지 않은 한 수신된 패킷을 사용하지 않을 수 있다. 버퍼(23)는, 송신 오류가 검출되는 경우에 있어서 선택적으로 제거(flush)하기 위한 추가된 능력을 가지고 선입-선출(first-in-first-out; FIFO)로서 동작될 수 있다. 스케일러블 프로토콜은, 데이터를 버퍼(23)의 밖으로 풀링하기 위한 그리고 패킷 비트 시프팅을 위한 가변 비트 길이 능력을 포함할 수 있다. 도 3을 참조하여 이상에서 논의된 바와 같이, 패킷(30)의 시작부는 트랜잭션 유형 필드(32)를 포함할 수 있으며, 이는 트랜잭션 유형 필드(32) 내에 표시된 트랜잭션 유형에 기초하여 패킷 크기를 지정할 수 있다. 이와 같이, 트랜잭션 유형 필드(32)는, 스케일러블 프로토콜이 패킷(30) 내의 ECC 필드(36)의 상대적인 위치 및 크기를 포함하는 패킷 크기를 결정하기 위해 사용할 수 있는 정보를 포함한다. ECC가 체크된 이후에, 스케일러블 프로토콜을 이용하는 수신기는 패킷(30)이 무-오류인지 여부를 결정할 수 있다. 패킷이 무-오류로 여겨지는 경우, 수신기는, 트랜잭션 유형이 적절하게 디코딩되었다는 것 및 패킷 크기가 정확하게 해석되었다는 것을 알 수 있다. 그러면, 수신기는 최근에 파싱된 패킷 바로 이후에 수신된 다음 패킷으로 전방으로 진행할 수 있다. 이러한 스케일러블 프로토콜은, 크기들, 길이들, 인코딩/디코딩 방법들, 및 유사한 것과 무관하게, 전 이중 또는 반 이중이던지와 무관하게, 임의의 다양한 변형예들과 함께 사용될 수 있다. 수신 컴포넌트가 레인 패킹 기법에 따라 패킹된 패킷들을 수신한 이후에 발생하는 프로세스의 추가적인 세부사항들은 도 11을 참조하여 이하에서 논의될 것이다.
참고로, 스케일러블 프로토콜은 길이가 변화하는 송신들을 포함할 수 있다. 즉, 요청 버스(Q) 상에서, 스케일러블 프로토콜은 16개의 상이한 길이들을 사용할 수 있다. 예를 들어, 요청 버스는, 예컨대 모두 8 등의 증분(increment)들인 것과 같은, 임의의 특정한 최적화된 길이를 생성하기 위한 패딩이 없는, 43, 73, 97, 135, 143, 149, 200, 201, 216, 330, 362, 588, 652, 1054, 1105, 및 1230의 길이 비트 카운트들을 포함할 수 있다. 동일한 방식으로, 응답 버스(S)는, 다시 패딩이 없는, 33, 42, 85, 101, 167, 297, 555, 및 1069의 길이 비트 카운트들과 같은, 8개의 상이한 길이들을 포함할 수 있다.
데이터 패킹을 위한 패킷들의 파싱
이상에서 언급된 바와 같이, 스케일러블 프로토콜은 최대 비트 효율을 가능하게 하도록 설계될 수 있다. 이와 같이, 특정 실시예들에 있어서, 패킷(30)은, 사용되는 물리적 버스의 정수 배수에 대응하지 않는 임의적인 크기를 가질 수 있다. 임의적으로 크기가 결정된 패킷들의 송신은 패킷들을 함께 타이트하게 패킹함으로써 비트 효율성을 유지하며, 그럼으로써 각각의 후속 패킷은, 각 패킷을 0들을 가지고 패딩하지 않으면서 선행 패킷 바로 이후에 송신된다. 그러나, 수신기(예를 들어, 호스트 SoC(12))가 제 1 패킷이 종료하고 제 2 패킷이 시작되는지 여부를 결정하기 위하여, 수신기는 수신된 패킷들을 파싱하기 위하여 본원에서 설명되는 특정 기술들을 구현할 수 있다. 특정 실시예들에 있어서, 스케일러블 프로토콜은, 수신기가 수신된 패킷들에 대하여 이용하기 위한 파싱 방법을 지정할 수 있다. 이러한 파싱 방법은, 시스템 구현예에서 사용되는 논리적 동작들의 헤드에서 파이프라이닝된(pipelined) 동작들로서 시프트 동작들, 오류 검출, 및 버퍼 관리를 포함할 수 있다.
전술한 것을 유념하면, 전 이중이며, 진입 방향들에서 8 비트 단방향 및 진출 방향들에서 8 비트인 물리적 버스의 일 예가 파싱 방법의 특정 측면들을 명확하게 하기 위하여 이하에서 설명된다. 이러한 예에 있어서, 하나의 플리트는 버스 상에 존재하는 하나의 유닛 간격인 것으로서 간주된다. 즉, 하나의 플리트는 버스를 통해 전송되는 데이터의 8 비트들을 포함할 수 있다. 또한, 59 비트들의 해밍 밀도(HD6) 오류 커버리지(coverage), 어드레스36b, 및 윈도우 3b를 갖는 최소 패킷은, 5-비트 트랜잭션 유형, 41-비트 데이터 페이로드, 및 13-비트 ECC를 포함할 수 있다. 유사한 크기의 작은 패킷들의 무수의 스트림이, 비트 간극(gap)들을 남기지 않고 함께 패킹될 수 있다는 것을 가정하면, 송신은, 송신되는 제 1 패킷에 대하여 레인 0으로부터 시작하여 레인 7로 진행하는 다음의 시퀀스를 반영할 수 있다: (명칭.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
그런 다음 제 2 패킷은 다음과 같이 플리트 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
그런 다음, 제 3 패킷은 다음과 같이 플리트 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
이상에서 예시된 3개의 예시적인 패킷들을 유념하면, 수신기에 의해 일단 수신되면, 인입 비트들은 수신 FIFO 내에 위치될 수 있다. 이상의 예에 있어서 8개의 레인들이 존재하기 때문에, 비트들은 한번에 8개가 이동될 수 있다. 그러나, 인입 버스가 극단적으로 빠를 수 있기 때문에(예를 들어, FIFO를 사이클링하기에 너무 빠를 수 있기 때문에), FIFO는 또한 상당히 넓게 만들어질 수 있으며, 데이터는 폭의 마지막 유닛에 도달할 때까지 연속적으로 FIFO의 각각의 연속적인 8b 폭으로 전송될 수 있다. 그때, FIFO 어드레스는 일반적인 FIFO 동작들에 따라 증분되며, 폭의 마지막 유닛이 다시 수신될 때까지 FIFO 레인들 0-7, 그 다음 8-15, 등에서 다시 채워지기 시작한다. 이는, 더 느린 로직이 매우 빠른 직렬화기/역직렬화기(serializer/deserializer; SERDES) 컴포넌트들(예를 들어, 25ps의 유닛 간격을 갖는 40Gb/s SERDES)을 따라잡는 것을 가능하게 한다. 2GHz의 논리적 클럭이 사용되는 경우, FIFO는 20 x 8-비트 레인 폭 또는 160 비트들 너비(wide)일 수 있다. 이와 같이, ECC 로직은 각각의 블록에 대하여 XOR 게이트들을 사용하여 자연스럽게 160-비트 블록들 내에 구축될 수 있다(예를 들어, 블록 0은 비트들 0 내지 159를 프로세싱하며, 블록 1은 비트들 160 내지 319를 프로세싱하는 등이며, 그 결과 ECC 블록들의 총 수는 14일 수 있고, 여기에서 각각의 ECC 블록은 2-입력 XOR 게이트들의 상이한 상호연결을 포함할 수 있다).
이상에서 설명된 3개의 패킷들의 각각이 연속적으로 송신되기 때문에, 그리고 비트들이 수신기에 도착하는 것이 어떠한 프레이밍(framing) 정보도 포함하지 않기 때문에, 패킷들이 적절하게 프레이밍될 수 있도록 패킷의 길이를 처음으로 결정하는 것은 수신 회로부(예를 들어, 호스트 SoC(12))의 책임이다. 다시 이상의 예를 참조하면, 수신기는 먼저 FIFO로부터 즉시 이용가능한 160-비트 값을 수신할 수 있다. 이상에서 설명된 특정 예에 있어서, 제 1 패킷 전체가 그 160-비트 존(zone) 내에 존재한다.
이상에서 언급된 바와 같이, 패킷(30)의 제 1 부분은, 패킷(30)의 시작을 나타내는 시작 비트 필드(46)를 포함할 수 있다. 패킷(30)의 다음 부분은, 0 내지 31의 값을 포함할 수 있는 트랜잭션 유형 필드(32)를 포함할 수 있다. 트랜잭션 유형 필드(32)의 값은, (비트들의) 데이터 페이로드의 크기 및 ECC의 크기를 나타내는 테이블을 인덱싱하기 위하여 사용될 수 있다. 특정 실시예들에 있어서, 수신기는 동일한 목적을 위하여 간단한 로직 기능을 사용할 수 있다. 수신된 비트들 모두가 오류가 없다는 것이 즉시 알려지지 않는다고 하더라도, 수신기는 처음에, 이들이 트랜잭션 유형 필드(32) 내에 명시된 트랜잭션 유형을 사용한다고 가정할 수 있다. 그런 다음, 수신기는, 파이프라인 스테이지에서, 수신된 패킷에 오류가 없는지 여부를 결정하기 위하여 ECC를 체크할 수 있다. 일 실시예에 있어서, ECC를 체크하기 위하여, 트랜잭션 유형 필드(32)의 트랜잭션 유형 및 페이로드 필드(34)의 데이터 페이로드가 ECC 블록(들)에서 조사될 수 있으며, 그 결과 인입 ECC 비트들이 모든 ECC 블록들에 제공된다. 일 실시예에 있어서, ECC 블록은, 예를 들어, 해밍 거리 알고리즘을 이용하는 스케일러블 오류 제어 코드 알고리즘을 사용하여 ECC를 체크할 수 있다. 예를 들어, ECC 블록은 6의 해밍거리를 갖는 오류 제어 코드 알고리즘(HD6)을 이용할 수 있다. 이와 같이, ECC 블록은 59 비트들(5b 트랜잭션 필드, 41b 데이터 페이로드, 13b ECC)의 오류 커버리지를 제공할 수 있다. 즉, ECC 블록은 59개의 정확한 것으로 알려진(known-to-be-correct) 비트들을 제공할 수 있다. 해밍 거리를 사용하는 스케일러블 오류 제어 알고리즘 및 알고리즘들에 관한 추가적인 세부사항들은 이하에서 더 상세하게 설명될 것이다.
수신기가 패킷에 오류가 없다는 것을 검증한 이후에, 그런 다음 수신기는, 트랜잭션 유형 값이 정확하였으며 따라서 수신기가 수신된 패킷의 적절한 프레이밍을 가질 수 있다는 것을 확실하게 알 수 있다. 그런 다음, 59개의 정확한 것으로 알려진 비트들은 추가적인 패킷 프로세싱(즉, 이루어지고 있는 정확한 요청을 결정하고 및 요청을 프로세싱하는 것)을 위하여 다음 파이프라인 스테이지로 포워딩될 수 있다. 59-비트의 제 1 패킷이 정확하다는 결정 이후, 그리고 추가적인 프로세싱을 위하여 59-비트의 제 1 패킷을 포워딩한 이후에, 그런 다음 수신기는 비트 0에 정렬하기 위하여 160-비트 너비 FIFO의 나머지 101 비트들을 배럴-시프팅(barrel-shift)하고, 이상의 프로세스를 반복할 수 있다.
일부 상황들에 있어서, 수신기는 파싱하기 위해 이용하기에 너무 적은 데이터를 가질 수 있다(즉, 트랜잭션 유형 필드(32)로부터, 페이로드 필드(34)를 통해, 및 ECC 필드(36)까지의 모든 것들이 이용가능해야만 한다). 여기에서, 수신기는 이것이 모두 이용가능해질 때까지 계속해서 정보를 페치(fetch)할 수 있다. 큰 패킷들이 단일의 160-비트 섹션을 초과할 수 있지만, 수신기가 트랜잭션 유형으로부터 ECC가 시작하고 종료하는 장소를 알기 때문에, 수신기는 ECC 비트들을 적절한 ECC 논리 블록들로 포워딩할 수 있다. 또한, 트랜잭션 유형이 패킷의 헤드에 존재하기 때문에, 수신기는 이를 찾기 위한 것을 용이하게 알 수 있다. 또한, 수신기는, 페이로드 필드(34)가 트랜잭션 유형 필드(32)와 ECC 필드(36) 사이의 모든 것을 포함한다는 것을 결정할 수 있다. 페이로드 필드(34)의 식별 시에, 수신기는 데이터 페이로드를 적절한 ECC 논리적 블록들로 전송할 수 있다. 특정 실시예들에 있어서, 물리적인 이동(MOVE) 대신에, ECC는, 물리적인 레이아웃(layout) 최적화 사용들에 의존하여, 데이터를 일시적으로 저장하는 레지스터 비트들에서 인 시튜(in situ)로 구현될 수 있다.
이상에서 설명된 기술의 이점은 오류 메시지의 빠른 생성을 지원하는 것을 포함한다. 이와 같이, ECC가 오류를 검출하는 경우, 로직 신호가 진출(egress) 큐 관리자로 전달되며, 오류 메시지가 만들어지고 적절한 채널 상에서 송신된다.
전술한 것을 유념하면, 도 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)는 시작 비트를 검출하고, 제 1 패킷(92)을 파싱하기 시작할 수 있다.
블록(106)에서, 호스트 SoC(12)는 시작 비트 다음의 5개의 비트들에 기초하여 제 1 패킷(92)의 트랜잭션 유형을 결정할 수 있다. 이상에서 논의된 바와 같이, 호스트 SoC(12)는, 트랜잭션 유형 필드(32) 내의 수신된 2진수 값에 기초하여 제 1 패킷(92)과 연관된 트랜잭션 유형을 결정하기 위하여 로컬 저장 컴포넌트 내에 저장된 키를 참고하거나 또는 룩-업 테이블을 사용할 수 있다.
개별적인 패킷에 대하여 대응하는 트랜잭션 유형을 결정한 이후에, 블록(108)에서, 호스트 SoC(12)는 개별적인 패킷의 페이로드 필드(34) 및 ECC 필드(36)를 식별할 수 있다. 즉, 개별적인 패킷의 트랜잭션 유형은, 페이로드 필드(34) 및 ECC 필드(36) 내에서 예상될 복수의 비트들을 호스트 SoC(12)에 나타낼 수 있다. 이와 같이, 호스트 SoC(12)는, 트랜잭션 유형 필드(32) 이후의 페이로드 필드(34)일 비트들의 제 1 수 및 페이로드 필드(34) 이후의 ECC 필드(36)일 비트들의 제 2 수를 지정할 수 있다.
패킷에 대한 ECC 필드(36)를 수신한 이후에, 호스트 SoC(12)는, 블록(110)에서, ECC 필드(36) 내에 제공된 데이터에 기초하여 수신된 패킷에 오류들이 존재하지 않는지 여부를 검증할 수 있다. 즉, 호스트 SoC(12)는, 트랜잭션 유형 필드(32) 내에 제공된 데이터 및 페이로드 필드(34) 내에 제공된 데이터의 정확성을 체크하기 위하여 ECC 필드(36) 내에 제공된 데이터를 사용할 수 있다.
블록(112)에서, 호스트 SoC(12)는 개별적인 패킷에 오류들이 없는지 여부를 결정할 수 있다. 호스트 SoC(12)가 개별적인 패킷에 오류가 없다는 것을 검증하는 경우, 호스트 SoC(12)는 블록(102)으로 복귀하고, 계속해서 비트들의 스트림을 수신한다. 그러나, 호스트 SoC(12)가 개별적인 패킷이 무오류가 아니라는 것을 결정하는 경우, 호스트 SoC(12)는 블록(114)으로 진행하고, 개별적인 패킷을 송신했던 컴포넌트로 다시 부정_수신확인 패킷을 송신할 수 있다. 이상에서 논의된 바와 같이, 부정_수신확인 패킷은 가장 최근의 양호한 것으로 알려진 버스 트랜잭션을 나타낼 수 있다. 이와 같이, 부정_수신확인 패킷은 트랜잭션 유형 및 마지막으로 성공적으로 수신된 패킷의 어드레스를 나타낼 수 있다. 송신 컴포넌트가 각각의 패킷이 송신되었던 순서를 알기 때문에, 그런 다음 송신 패킷은 부정_수신확인 패킷 내에 언급된 패킷의 바로 다음 패킷을 재전송할 수 있다.
송신기 컴포넌트가 부정_수신확인 패킷의 수신 시에 특정한 수의 패킷들을 재전송할 수 있다는 것을 보장하기 위하여, 특정 실시예들에 있어서, 송신 컴포넌트는, 개별적인 패킷이 송신된 이후에 특정한 양의 시간이 경과될 때까지 전송된 패킷들을 그것의 버퍼로부터 무시, 삭제, 소거, 또는 라이트 오버(write over)하지 않을 수 있다. 다시 말해서, 패킷들이 송신된 이후에, 송신 컴포넌트(예를 들어, 메모리 SoC(22))는, 송신된 패킷을 그것의 버퍼 컴포넌트로부터 삭제하기 이전에 특정한 양의 시간을 기다릴 수 있다.
송신 컴포넌트가 각각의 패킷을 송신한 이후에 이것을 송신 컴포넌트의 버퍼로부터 삭제하기 이전에 기다릴 수 있는 시간의 양은 패킷마다 변화할 수 있다. 각각의 패킷이 상이한 수의 비트들을 포함할 수 있기 때문에, 패킷을 송신하고 이에 응답하여 부정_수신확인 패킷을 수신하기 위해 수반되는 시간의 양은 각각의 패킷에 대하여 상이할 수 있다. 일반적으로, 송신 컴포넌트가 기다릴 수 있는 시간의 양은, 패킷이 버스(62)를 가로질러 송신되기 위한 최악의 지체 시간, 수신 컴포넌트가 패킷 상의 오류를 검출하기 위한 최악의 지체 시간, 및 송신 컴포넌트가 부정_수신확인 패킷을 수신하기 위한 최악의 지체 시간에 의존할 수 있다. 이상에서 언급된 각각의 상황에 대한 최악의 지체 시간은, 수행될 동작에 대하여 예상되는 시간에 기초하여, 예상되는 시간 계산에서의 오류의 마진을 제공하기 위하여 예상되는 시간의 어떤 퍼센트를 예상되는 시간에 더함으로써 결정될 수 있다.
이상에서 설명된 수행될 다양한 동작들에 대하여 예상되는 시간을 결정함에 있어서 수반되는 인자들 중 일부는, 송신되는 패킷의 크기, 요청 버스(Q) 및 응답 버스(S) 상의 레인들의 수, 각각의 버스에 걸쳐 송신될 데이터의 UI에 대한 시간의 양, 수신 컴포넌트가 수신 컴포넌트에 오류가 없는지를 검증하기 이전의 수신 컴포넌트 내에서 예상되는 복수의 파이프라인 지연들, 송신 컴포넌트 내의 큐들의 최대 깊이, 긴급 메시지들을 전송하기 위한 송신 컴포넌트의 정책에 관한 정보(예를 들어, 긴급 메시지들은 큐의 전방에 위치됨), 및 유사한 것을 포함한다. 이상에서 열거된 인자들이 예로서 제공되며, 수행될 다양한 동작들에 대하여 예상되는 시간을 결정하기 위하여 사용될 수 있는 인자들의 범위를 제한하지 않는다는 것을 주의해야만 한다.
데이터 재배열 동작들
트랜잭션 윈도우들이 주어진 트랜잭션 윈도우에 대한 순서를 나타내기 위하여 사용될 수 있지만, 일부 경우들에 있어서, 개별적인 트랜잭션 윈도우들의 순서에 따라서 트랜잭션 동작들을 수행하는 것이 바람직하지 않을 수 있다. 예를 들어, DRAM은, 다른 DRAM 동작들에 의해서 연기될 수 없는 리프레시 동작을 수반할 수 있다. 다른 예는, NAND 메모리가 소거 동작을 위하여 준비하기 위해 데이터를 셔플(shuffle)하고 있는 때를 포함할 수 있다. 여기에서, 셔플되고 있는 데이터와 연관된 어드레스들의 범위는, 트랜잭션 동작이 동일한 어드레스들의 범위를 액세스하려고 시도하는 경우 일시적으로 이용불가능할 수 있다. 이와 같이, 스케일러블 프로토콜이 트랜잭션 윈도우들에 따라 지정된 순서에도 불구하고 동작들을 재배열하는 것이 유익할 수 있다.
통상적인 시스템들에 있어서, 배열을 가능하게 하기 위하여 다양한 기술들이 사용된다. 예를 들어, 시스템은 요청 동작과 함께 트랜잭션 식별정보(identification)를 전송할 수 있다. 그러면, 응답 동작은 동일한 트랜잭션 식별정보를 포함할 수 있다. 트랜잭션 식별정보는 8 비트들일 수 있으며, 이는 추가적인 8 비트들이 매 요청과 함께 그리고 다시 매 응답과 함께 전송된다는 것을 의미한다. 이와 같이, 요청 버스(Q) 및 응답 버스(S) 둘 모두 상의 오버헤드 비트들은, 매 요청 및 응답과 함께 트랜잭션 식별정보를 전송하지 않는 것에 비하여 상당히 클 수 있다.
전술한 것을 유념하면, 특정 실시예들에 있어서, 스케일러블 프로토콜은, 이것이 재배열되는 경우 트랜잭션 동작들이 더 효율적으로 수행될 수 있다는 것을 결정하지 않는 한, 트랜잭션 윈도우들에 의해 지정된 순서를 보존할 수 있다. 일단 스케일러블 프로토콜(예를 들어, 수신 컴포넌트)이 이러한 결정을 하면, 이는 특정한 트랜잭션 존에 새로운 상대적인 순서를 줄 수 있는 재배열 메시지를 전송할 수 있다. 트랜잭션 존은 전송되는 트랜잭션 동작들의 전부의 서브세트를 포함할 수 있다. 재배열 메시지의 수신 시에, 송신 컴포넌트는 재배열 메시지에 의해 제공된 새로운 상대적인 순서에 따라 트랜잭션 동작들을 재배열할 수 있다. 새로운 상대적인 순서는, 각각의 트랜잭션 동작이 수행되고 있는 다른 트랜잭션 동작들과 관련하여 수행될 수 있는 순서를 나타낼 수 있다. 그러면, 재배열된 트랜잭션 동작들을 포함하는 개별적인 트랜잭션 존은 달리 재배열될 때까지 새로운 순서를 유지할 수 있다.
이상에서 언급된 바와 같이, 수신 컴포넌트는, 자연적인 응답 시퀀스로부터 벗어나는 것이 바람직할 때 데이터 재배열 메시지를 전송할 수 있다. 일 실시예에 있어서, 수신 컴포넌트는, 트랜잭션 유형 필드(32) 내에 표시된 트랜잭션 유형에 기초하여 재배열이 선호될 수 있다는 것을 결정할 수 있다. 즉, 트랜잭션 유형 필드(32)는 본질적으로 재배열이 선호된다는 것을 나타낼 수 있다. 트랜잭션 유형 필드(32)를 수반하는 것은, 16 x 4-비트 순서 식별자들을 포함하는 64 비트 메시지일 수 있다. 이러한 식별자들은, 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개의 응답들보다 더 적은 것들이 계류중인 경우, 비-존재(non-existent) 장래 응답들이 순서대로 열거될 수 있다. 즉, 이상의 예를 다시 참조하면, 0 내지 7이 계류 중이었고, 응답 0이 다른 것들의 전부 이후까지 지연되는 것이 선호되었던 경우, 비트들 8 내지 15의 순서는 다른 것들의 전부 이후에 0이 제공되는 한은 말단에 남아 있을 수 있다.
일 실시예에 있어서, 재배열 메시지는 새로운 배열이 선호되는 임의의 시점에 전송될 수 있다. 다시 이상의 예를 참조하면, 응답들이 1, 2, 3, 4, 5, 6, 7, 및 0의 순서로 전송되는 경우, 나머지 아이템들은 예상된 순서로 전송되지 못한다는 것이 결정되고, 새로운 재배열 메시지가 전송될 수 있다. 여기에서, 바로 다음 응답은 응답 8이 아니라 응답 0일 것이며, 이는 재배열 메시지가 전송되는 임의의 시점에 순서 카운터가 0으로 리셋되기 때문이다. 이와 같이, 새로운 재배열 메시지를 전송할 시에, 0 내지 15의 새로운 상대적인 순서는 가장 유익한 순서에 따라 결정될 수 있다. 임의의 재배열 메시지들의 부존재 시에, 모든 데이터는 윈도우 마다 수신된 요청들의 "자연적인" 순서일 수 있다. 임의의 경우에 있어서, 루틴하게 요청 식별정보들 또는 응답 식별정보들을 송신하지 않고 시스템 내에서 데이터 재배열을 지원함으로써, 스케일러블 프로토콜을 그렇지 않았다면 통상적인 프로토콜들에서 사용되었을 많은 양의 오버헤드를 절감할 수 있다.
전술한 것을 유념하면, 도 12는, 패킷들이 송신 컴포넌트(예를 들어, 메모리 SoC(22))에 의해 송신되도록 의도된 원래 순서와 비교하여, 수신 컴포넌트로 송신될 패킷들을 재배열하기 위하여 수신 컴포넌트(예를 들어, 호스트 SoC(12))에 의해 이용될 수 있는 방법(120)의 순서도를 예시한다. 방법(120)의 다음 설명은 도 13의 다이어그램(140)을 참조하여 논의될 것이다. 다이어그램(140)은, 방법(120)의 다양한 스테이지들에서 일어나는 동작들을 예시하는 것을 돕기 위하여 제공된다. 논의의 목적들을 위하여, 방법(120)의 다음의 설명은 호스트 SoC(12)에 의해 수행되는 것으로서 설명될 것이지만, 임의의 적절한 수신 컴포넌트가 본원에서 설명되는 동작들을 수행할 수 있다는 것이 이해되어야만 한다.
먼저 도 12를 참조하면, 블록(122)에서, 호스트 SoC(12)는 송신 컴포넌트(예를 들어, 메모리 SoC(22))로부터 복수의 패킷들을 수신할 수 있다. 수신된 패킷들은 일반적으로, 선호되는 순서로 호스트 SoC(12)에 의해 수행되도록 요청된 동작들을 포함할 수 있다. 송신 컴포넌트(예를 들어, 메모리 SoC(22))는, 동작들의 선호되는 순서를 반영할 수 있는 특정한 순서로 데이터 동작들에 대응하는 패킷들을 전송할 수 있다. 도 13의 다이어그램(140)은, 로우(row)(142)에 호스트 SoC(12)에 의해 수신된 패킷들의 예시적인 원래 순서를 예시한다. 도 13에 도시된 바와 같이, 송신 컴포넌트에 의해 송신되는 10개의 패킷들은 처음에 1-10으로 넘버링될 수 있다.
블록(124)에서, 호스트 SoC(12)는, 수신된 패킷들 내에 표시된 동작들이 상이한 순서로 수행되어야만 하는지 여부를 결정할 수 있다. 즉, 예를 들어, 호스트 SoC(12)가 어떤 이유 때문에(예를 들어, 요청된 메모리 어드레스가 사용 중이거나, 이용불가능하거나, 등 때문에) 특정 동작을 수행할 수 없는 경우, 호스트 SoC(12)는 그 대신에 이전에 요청된 동작을 수행하기 이전에 그 이후의 동작을 수행할 수 있다. 호스트 SoC(12)가 동작들이 상이한 순서로 수행되지 않아야만 한다는 것을 결정하는 경우, 호스트 SoC(12)는 블록(126)으로 진행하고, (예를 들어, 송신 컴포넌트에 의해 송신된 바와 같은) 선호되는 순서로 수신된 패킷의 동작들을 수행할 수 있다.
호스트 SoC(12)가 동작들이 선호되는 순서로 수행되지 않아야만 한다는 것을 결정하는 경우, 블록(128)에서, 호스트 SoC(22)는 요청된 동작들을 수행하기 위한 새로운 순서를 결정할 수 있다. 상이한 순서로 동작들을 수행하기 위하여, 호스트 SoC(12)는, 요청된 순서로 수행되지 않을 수 있는 동작들에 대응하는 특정 패킷을 식별할 수 있다. 그런 다음, 호스트 SoC(12)는, 후속 동작이 식별된 동작의 결과들에 의존하는지 여부를 결정할 수 있다. 즉, 호스트 SoC(12)는, 이후의 시점에 식별된 동작을 수행하는 것이 수행될 임의의 나머지 동작들에서 오류를 초래할 수 있는지 여부를 결정할 수 있다. 특정 실시예들에 있어서, 호스트 SoC(12)는, 동작들이 재배열될 수 있는지 여부를 결정하기 위하여 각각의 패킷의 트랜잭션 윈도우를 평가할 수 있다. 예를 들어, 트랜잭션 윈도우들이 다음과 같은 순서: Win2, Win2, Win2, Win3, Win3, Win2, 및 Win3을 갖는 경우, 호스트 SoC(12)는 첫번째 Win3 요청을 수행하기 위하여 세번째 Win2 요청을 지연시킬 수 있으며, 이는 이들이 상이한 트랜잭션 윈도우들을 나타내며 그에 따라서 상이한 메모리 유형들 상에서 동작할 것으로 예상되기 때문이다. 각각의 패킷의 트랜잭션 윈도우들을 사용하면, 그러면 호스트 SoC(12)는 요청된 동작들을 수행하기 위한 새로운 순서를 결정할 수 있다.
동작들을 수행하기 위한 새로운 순서를 결정한 이후에, 블록(130)에서, 호스트 SoC(12)는, 식별된 동작에 대응하는 패킷에 바로 선행하는 패킷 이후에 수신된 복수의 패킷들을 재명명(rename)할 수 있다. 일 실시예에 있어서, 호스트 SoC(12)는 큐 내의 그들의 현재 위치에 따라서 패킷들을 재명명할 수 있다. 예를 들어, 다시 도 13을 참조하면, 호스트 SoC(12)가 이후의 시간에서 수행되어야만 하는 동작을 포함하는 패킷으로서 원본 패킷 5를 식별하는 경우, 호스트 SoC(12)는 큐 내의 그들의 현재 위치에 따라 패킷 4 이후의 패킷들을 재명명할 수 있다. 이와 같이, 패킷들 5-10은 다이어그램(140)의 로우(144)에 예시된 바와 같이 패킷들 0-5로 재명명될 수 있다. 이러한 방식으로, 나머지 패킷들이 큐 내에서의 그들의 상대적인 위치에 따라서 재명명될 수 있다.
나머지 패킷들을 재명명한 이후에, 블록(132)에서, 호스트 SoC(12)는, 나머지 패킷들이 호스트 SoC(12)에 의해 어드레싱될 새로운 순서를 나타내거나 또는 호스트 SoC(12)에 의해 수행될 대응하는 동작들의 순서에 따른 재배열 메시지를 생성할 수 있다. 재배열 메시지는 블록(128)에서 결정된 새로운 순서에 기초하여 그리고 블록(130)에 제공되는 바와 같은 재명명된 패킷들에 따라서 결정될 수 있다. 예를 들어, 다시 도 13의 예를 참조하면, 호스트 SoC(12)가 원래의 5번째 패킷 동작이 원래의 7번째 패킷 이후에 수행되어야만 한다고 결정했던 경우, 재배열 메시지는 로우(146)에 도시된 바와 같이 1, 2, 3, 0, 4, 5으로서 제공될 수 있다. 로우(146)는 재명명된 패킷들에 따른 동작의 새로운 순서를 나타낸다. 예시적인 목적들을 위하여, 로우(148)는, 재배열 메시지가 나머지 패킷 동작들은 그들의 원래의 패킷 번호들에 따를 것이라는 것을 지정하는 순서를 나타낸다.
블록(134)에서, 호스트 SoC(12)는 송신 컴포넌트로 재배열 메시지를 송신할 수 있다. 이와 같이, 송신 컴포넌트는, 호스트 SoC(12)로부터 송신된 응답 패킷들이 개별적인 요청 패킷과 연관되는 순서를 조정하기 위하여 재배열 메시지를 사용할 수 있다. 즉, 송신 컴포넌트는 재배열 메시지 이후에 수신되는 각각의 응답 패킷을 재배열 메시지 내에 표시된 재명명된 상대적인 순서에 따라서 연관시킬 수 있다.
마지막으로 구현된 동작에 대응하는 패킷 이후의 패킷들을 재명명함으로써, 호스트 SoC(12)는, 송신 컴포넌트에 의해 수신될 응답 패킷들을 재명명하는 것에 관한 기준 순서를 송신 컴포넌트에 제공할 수 있다. 이와 같이, 호스트 SoC(12) 및 송신 컴포넌트는 패킷들이 이미 전송된 순서를 알 수 있으며, 그들의 상대적인 순서에 따라 재명명된 패킷들은 각각의 패킷과 함께 패킷 식별 번호를 전송해야 할 필요 없이 호스트 SoC(12)가 응답 패킷들을 연관시키는 것을 가능하게 하고, 그럼으로써 더 비트-효율적인 통신 기법을 제공한다.
복수의 요청 및 응답 버스들이 존재하는 상황들에 있어서, 스케일러블 프로토콜은 다음과 같이 트랜잭션 동작들이 수행되는 순서를 결정할 수 있다. 4개의 개별적인 응답 버스들과 연관된 4개의 요청 버스들이 존재하는 경우, 요청 및 응답 버스들의 연관된 쌍은 스케일러블 프로토콜에 의해 채널로서 명명될 수 있다. 이와 같이, 일 실시예에 있어서, 트랜잭션 동작은 "채널.윈도우.어드레스"로서 정의될 수 있다. 여기에서, 그러면 순서는 "채널.윈도우.데이터시퀀스번호"로서 정의될 수 있다. 흔히, 단지 하나의 데이터만이 트랜잭션 동작의 부분일 수 있으며, 그 결과 데이터 시퀀스 번호는 보통 최대 지원 패킷 크기보다 더 큰 트랜잭션 요청들을 제외하고는 중요하지 않다. 그렇지 않으면, 스케일러블 프로토콜은 채널.윈도우 내의 순서를 따를 수 있다. 2개의 채널들이 동일한 윈도우를 사용할 때에도, 스케일러블 프로토콜은 그들 사이의 임의의 순서를 통합하지 않을 수 있다. 그 대신, 스케일러블 프로토콜은 각각의 채널.윈도우 조합 내에 순서를 제공할 수 있다. 결과적으로, 스케일러블 프로토콜은 시스템의 동작을 크게 단순화시킬 수 있으며, 이는 채널들이 비동기식 타이밍 상호-관계들의 가능성을 가지기 때문이다. 채널.윈도우에 따라 트랜잭션 동작들을 배열함으로써, 스케일러블 프로토콜은 배열을 간단하게 유지하고, 또한 중재가 수행될 수 있는 복수의 횟수들을 감소시킨다. 또한, 이러한 배열 기술은 그렇지 않았다면 전송되었을 복수의 재배열 메시지들을 또한 감소시킬 수 있다.
데이터 재배열 동작들 - 높은 빈도
스케일러블 프로토콜이 전송되는 트랜잭션 동작들에 대하여 새로운 상대적인 순서를 제공할 수 있는 것으로서 설명되었지만, 이러한 유형의 재배열 기법을 높은 빈도의 재배열 요청들을 가질 수 있는 대형 시스템 내에 통합하는 것이 어려울 수 있다. 즉, 재배열 메시지들이 어떤 높은 빈도로(즉, 특정 문턱값 이상으로) 전송되는 경우, 재배열 메시지들을 전송하고 트랜잭션 동작들을 재배열하기 위한 시간 및 자원들의 효율적인 사용이 더 이상 존재하지 않을 수 있다. 다시 말해서, 일부 유형들의 시스템들에 대하여, 데이터 재배열의 빈도가 너무 높아 질 수 있으며, 그 결과 송신 컴포넌트와 수신 컴포넌트 사이의 통신들의 양이 비효율적이게 될 수 있다. 이러한 시스템들에 대하여, 스케일러블 프로토콜은, 많은 수의 재배열 이벤트들이 선호될 때에도 트랜잭션 식별정보들의 비트 트래픽을 감소시킬 수 있다.
일 실시예에 있어서, 수신 컴포넌트는 현재의 재배열 기술이 비효율적으로 동작하고 있는지 여부를 결정할 수 있다. 예를 들어, 송신 컴포넌트는, 수신 컴포넌트로부터 재배열 메시지들이 수신되고 있는 빈도를 결정할 수 있다. 빈도가 어떤 문턱값 위인 경우, 송신 컴포넌트는 현재의 재배열 기법이 비효율적으로 동작하고 있다는 것을 결정할 수 있다. 이러한 시점에, 송신 컴포넌트는 새로운 필드: 요청 버스(Q) 시퀀스 번호를 포함하도록 각각의 트랜잭션 동작의 각각의 트랙잭션 식별정보(identification; ID)를 첨부할 수 있다. 수신 컴포넌트가 요청들이 수신되는 순서를 알 수 있기 때문에, 수신 컴포넌트는 각각의 수신된 요청에 라운드-로빈(round-robin) 시퀀스 번호를 할당할 수 있다(즉, 요청 버스(Q) 시퀀스 번호, Q시퀀스 또는 Qseq). 요청 버스(Q) 시퀀스 번호는, 개별적인 채널 및 각각의 요청의 개별적인 윈도우의 조합에 적용될 수 있다. 이와 같이, 요청 버스(Q) 시퀀스 번호는 "채널.윈도우.Qseq"로서 표시될 수 있으며, 그 결과 Qseq는 각각의 개별적인 채널 및 개별적인 윈도우에 대하여 라운드 로빈 순서로 할당될 수 있고, 그럼으로써 알려진 데이터를 송신하지 않음으로써 대역폭을 보존할 수 있다. 예를 들어, (채널 0 상의 모든) 요청들의 순서가: Win2, Win2, Win2, Win3, Win3, Win2, 및 Win3과 같으며 이들이 제 1 트랜잭션들인 경우, 수신기에 의해 첨부된 할당된 Qseq 번호들은 각기: 0, 1, 2, 0, 1, 3, 및 2일 것이다. 즉, 각각의 윈도우는 각각의 유형(즉, 채널/윈도우)의 요청의 수신에 기초하여 라운드 로빈 Qseq 시퀀스와 연관될 수 있다.
요청들을 수신한 이후에, 그리고 응답이 요청 버스(S) 상에서 전송되도록 계획될 때, 수신 컴포넌트는 각각의 개별적인 응답에 그것의 대응하는 Qseq 값을 태깅(tag)할 수 있다. 이와 같이, 송신 컴포넌트는 각각의 수신된 응답을 그것의 개별적인 요청과 연관시킬 수 있다. 이상에서 보여진 바와 같이, 이상에서 설명된 기술은 요청 버스(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)에 걸쳐 한번 송신되는 패킷들에 시퀀스 번호를 부가할 수 있다. 이러한 방식으로, 스케일러블 프로토콜은, 패킷들이 송신되었던 순서와 같은, 송신 컴포넌트에 의해 알려진 정보를 레버리징(leverage)함으로써 비트 효율적인 데이터 전송들을 제공한다.
특정 실시예들에 있어서, 복수의 패킷들을 요청하는 긴 트랜잭션과 같은 이벤트에 있어서, 수신 컴포넌트는 오류가 발생하였을 때 각각의 패킷을 식별하기 위하여 요청 버스(Q) 시퀀스 번호(Qseq) 및 데이터 시퀀스 번호(데이터시퀀스)를 사용할 수 있으며, 파이프라인이 비워질 수 있고 파이프라인 내의 대응하는 패킷들이 재전송될 수 있다. 예를 들어, 응답 버스 S 버스 상에서 패킷 내에 오류가 발생하였던 경우, 송신 컴포넌트에 의해 수신된 마지막의 양호한 것으로 알려진 패킷은 기준으로서 사용하기 위한 Qseq 번호를 그 안에 포함할 수 있다. 이러한 기술을 이용하는 것의 결과로서, 이제 메시지들 중 일부가 실제로 더 짧으며, 이는 트랜잭션을 나타내기 위하여 트랜잭션 유형이 언급되지 않기 때문이다. 즉, 그렇지 않았다면 트랜잭션 유형을 나타내기 위하여, 최대 52 비트들에 이르는 패킷 내의 트랜잭션 유형, 윈도우 및 어드레스가 이러한 정보를 포함하기 위하여 사용될 수 있다. 이에 반해서, Qseq 값 및 데이터시퀀스 값을 전송하는 것은 23 비트들(예를 들어, 16+7=23 비트들)을 수반할 수 있으며, 그럼으로써 전송들에서의 비트 효율을 추가로 개선한다.
이상에서 설명된 재-배열 메시지 기술들에 비하여, Qseq 값을 패킷들에 첨부하는 것은, 재-배열이 수행되는 횟수가 어떤 빈도 문턱값 위일 때 송신되는 비트들의 더 낮은 전체 수를 야기할 수 있다. Qseq 값을 제공하는 옵션이 스케일러블 프로토콜 내에 동적으로 통합되는 것으로서 설명되었지만, 특정 실시예들에 있어서, Qseq 값을 제공하기 위한 스케일러블 프로토콜의 능력은 SoC가 설계된 스케일러블 프로토콜을 구현할 시점에 스케일러블 프로토콜 내에 구축되는 정적 선택일 수 있다. 스케일러블 프로토콜을 사용하는 유형의 시스템은, 어떤 배열 방법이 더 비트-효율적인 전송들을 제공할 수 있는지를 나타내기 위한 정보를 제공할 수 있다.
전술한 것을 유념하면, 일 실시예에 있어서, 요청 버스(Q) 시퀀스 번호 필드는, 4 킬로바이트 트랜잭션의 각각의 트랜잭션 동작을 식별하기 위하여 사용될 수 있는 18-비트 필드일 수 있다. 요청 버스(Q) 시퀀스 번호 필드가 18-비트 필드로서 설명되었지만, 요청 버스(Q) 시퀀스 번호 필드의 크기는 임의의 적절한 값일 수 있다. 일반적으로, 요청 버스(Q) 시퀀스 번호 필드의 크기는 특정 트랜잭션의 각각의 트랜잭션 동작을 식별하기에 충분히 클 수 있으며, 이는 요청 또는 응답이 수행될 수 있는 순서를 나타내기 위하여 사용될 수 있다. 개별적인 패킷에 요청 버스(Q) 시퀀스 번호 필드를 부가하는 것이 개별적인 패킷의 개별적인 크기를 증가시킬 수 있지만, 패킷 크기들의 증가는 통상적인 프로토콜들에서 수행되는 것과 같은 매 요청 및 응답 동작과 함께 트랜잭션 식별정보를 전송하는 것보다 훨씬 더 효율적이다. 또한, 요청 버스(Q) 시퀀스 번호 필드의 부가가 재배열 메시지들을 전송하는 것이 비효율적이라는 것을 결정한 이후에 이루어질 수 있기 때문에, 본 기술은, 통상적인 프로토콜들에서와 같이 매 트랜잭션 동작에 대하여 사용되는 것과는 대조적으로 특정한 경우들에서의 사용으로 제한된다.
일부 실시예들에 있어서, 요청들이 암시된 시퀀스 번호(예를 들어, 주어진 채널.윈도우에 대하여, 제 1 요청은 0이며, 그 다음은 1이고, 그 다음은 2이며, 등등)를 가질 때, 스케일러블 프로토콜은 트랜잭션 동작에 요청 버스(Q) 시퀀스 번호 필드를 부가하지 않을 수 있다. 즉, 트랜잭션 동작들이 자연적인 암시된 순서이기 때문에, 스케일러블 프로토콜은 시퀀스 번호들을 송신하지 않음으로써 전송되는 비트들을 절감할 수 있다.
그러나, 이상에서 언급된 바와 같이, 응답들이 자연적인 암시된 순서와는 상이한 순서로 흐르는 것이 선호될 때, 스케일러블 프로토콜은 각각의 수신된 트랜잭션 동작에 요청 버스(Q) 시퀀스 번호 필드 내의 대응하는 시퀀스 번호를 첨부할 수 있다). 일부 경우들에 있어서, 시퀀스 번호는 잠재적으로 더 큰 비트 필드를 사용할 수 있다. 예를 들어, NAND를 지원하는 윈도우에 있어서, 응답은 0.01 초를 요구할 수 있다. 여기에서, 패킷 레이트가 5x10-9인 경우, 운항 중인 5x107개의 응답들이 존재할 수 있으며, 이는 응답들의 각각을 식별하기 위하여 26 비트들을 사용할 수 있다. 더 실제적인 시나리오는 대략 4 킬로바이트들의 더 큰 트랜잭션들을 예상하며, 여기에서 대략 100,000개의 미처리(outstanding) 트랜잭션들이 존재할 수 있다. 여기에서, 각각의 트랜잭션은 단지 17 비트들 아래의 비트들로 식별될 수 있다. 더 작은 트랜잭션들을 가지고 더 양호한 성능을 가능하게 하기 위하여 그리고 식별정보 에일리어싱(aliasing)이 없다는 것을 보장하기 위하여, 비트 카운트는 18 비트들로 올림(round up)될 수 있다. 즉, 번호들은 0으로의 순환 법(modulo wrap around)에 따를 수 있으며, 그 결과 혼동을 회피하기 위하여 임의의 시점에 "살아 있는" 시퀀스 내에 명백한 간극이 존재할 수 있다.
임의의 경우에 있어서, 재배열 시퀀스를 제공할 때, 스케일러블 프로토콜은 요청 버스(Q) 시퀀스 번호 필드를 대응하는 패킷에 부가할 수 있다. 이와 같이, 이상에서 설명된 필드들 중 일부가 변화할 수 있다. 예를 들어, 요청 버스(Q) 상에서, 부정-수신확인(not-acknowledge) 명령은, 그것이 동일한 트랜잭션 유형 및 동일한 트랜잭션 윈도우를 가지도록 변화할 수 있다. 이전에, 부정-수신확인 명령이 어드레스, 데이터 시퀀스 번호, 및 원본 트랜잭션 유형을 포함하였을 수 있다. 일 실시예에 있어서, 부정-수신확인 명령이 이제는 요청 버스(Q) 시퀀스 번호 및 데이터 시퀀스 번호를 가질 수 있다. 결과적으로, 부정-수신확인 명령은 이상에서 설명된 것보다 더 작은 패킷일 수 있다.
응답 버스(S) 상에서, 일반적인 메시지 트랜잭션 유형은 변화되지 않을 수 있다. 그러나, 패킷의 나머지 아이템들은 다음과 같이 변화할 수 있다:
"완료" 메시지는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 ECC를 가질 수 있다.
"부정-수신확인형(Not-Acknowledged)"(NACK) 메시지는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 데이터 시퀀스 번호, 및 ECC를 가질 수 있다.
"메시지"는 변화되지 않을 수 있으며, 따라서 트랜잭션 유형, 윈도우, 8B 데이터, 및 ECC를 포함할 수 있다.
8u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 8B 데이터, 및 ECC를 포함할 수 있다.
16u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 16B 데이터, 및 ECC를 포함할 수 있다.
32u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 32B 데이터, 및 ECC를 포함할 수 있다.
48u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 48B 데이터, 및 ECC를 포함할 수 있다.
64u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 64B 데이터, 및 ECC를 포함할 수 있다.
80u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 80B 데이터, 및 ECC를 포함할 수 있다.
96u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 96B 데이터, 및 ECC를 포함할 수 있다.
112u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 112B 데이터, 및 ECC를 포함할 수 있다.
128u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 128B 데이터, 및 ECC를 포함할 수 있다.
256u데이터는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 256B 데이터, 및 ECC를 포함할 수 있다.
이상에서 언급된 바와 같이, 데이터 트랜잭션 유형들이, 고 성능 NAND를 갖는 시스템들에서도, 요청 시퀀스 번호의 양만큼 패킷 크기들에서 증가되었을 수 있다고 하더라도, 결과적인 시퀀스 번호는 단지 16b일 수 있다. 이와 같이, 높은 빈도로 재배열되는 트랜잭션 동작들에 대한 트랜잭션 동작들을 재배열하기 위한 지금 개시되고 있는 기술, 또는 이와 같이 설계되는 기술은, 매 응답에 16 비트들을 부가할 수 있는 통상적인 프로토콜들에 비하여 여전히 경제적일 수 있다. 또한, 현재 개시되고 있는 기술이 각각의 응답에 대한 시퀀스 번호를 포함하기 때문에, 스케일러블 프로토콜은 재배열 메시지들 또는 패킷들을 발행하지 않을 수 있다. 추가로, 각각의 트랜잭션 동작이 특정 시퀀스 번호와 연관되기 때문에, 트랜잭션 동작은, 알려진 데이터가 송신되지 않는다는 것을 보장하기 위하여 라운드 로빈 순서로 송신될 수 있다.
순서 노력 필드(Ordering Effort Field)
이상에서 논의된 바와 같이, 하나의 트랜잭션 윈도우 내의 트랜잭션 동작들이 순서대로 선호되는 상황들이 발생하지만, 그 순서로부터 벗어나는 것이 유익할 수 있다. 이를 유념하면, 이상에서 설명된 트랜잭션 동작들을 재배열하기 위한 2개의 기술들에 더하여, 일 실시예에 있어서, 스케일러블 프로토콜은 시스템 내에서 트랜잭션 동작들 또는 패킷들을 배열하기 위한 유연한 프로그래밍 옵션을 제공할 수 있다. 유연한 프로그래밍 옵션(예를 들어, 순서 노력 필드)은, 트랜잭션들의 원래의 순서를 유지함에 있어서 스케일러블 프로토콜이 사용해야만 하는 노력의 정도를 설정할 수 있다. 즉, 유연한 순서 노력 필드는, 스케일러블 프로토콜이 패킷들이 순서대로 송신되는 것을 보장하기 위하여 얼마나 열심히 일해야만 하는지를 나타낼 수 있다. 이와 같이, 유연한 순서 노력 필드는, 모든 패킷을 순서대로 유지하는 것에 대응하는 제 1 값과 어떤 것이 재배열되도록 허용하는 것에 대응하는 제 2 값 사이의 값들의 범위와 연관될 수 있다.
이를 유념하면, 트랜잭션 윈도우 0은 메모리 SoC(22)에 대하여 일반적인 목적의 제어 영역으로서 사용될 수 있다. 이와 같이, 트랜잭션 윈도우 0은 레지스터들, SRAM 버퍼들, 캐시 SRAM, 및 다른 어드레스가능 제어 특징부들 내에 상주할 수 있다. 각각의 트랜잭션 윈도우에 대하여, 스케일러블 프로토콜은 사용자 프로그래밍될 수 있는 구성가능 정보를 가능하게 할 수 있다. 이상에서 언급된 바와 같이, 하나의 유형의 구성가능 정보(예를 들어, 순서 노력 필드)는 원래의 순서를 유지함에 있어서의 노력의 정도(즉, 순서 노력)를 포함할 수 있다. 순서 노력 필드는 구현들에 있어서 큰 변형을 가질 수 있다. 예를 들어, 2-비트 필드에서, 순서 노력은 다음과 같이 특징지어질 수 있다:
00 - 매 기회마다 재-배열을 허용
01 - 상당한 재-배열을 허용
10 - 일부 재-배열을 허용
11 - 재-배열을 허용하지 않으며, 자원들이 이용가능할 때까지 기다림
특정 실시예들에 있어서, 스케일러블 프로토콜은 특정한 패킷들을 특정한 순서 존(ordering zone)들과 연관시킬 수 있다. 순서 존은 대응하는 패킷들이 유사하게 취급될 것임을 나타낼 수 있다. 예를 들어, 동일한 순서 존 내의 요청들은 순서대로 일 것으로 예상될 수 있으며, 순서대로가 가능하지 않은 경우, 송신 컴포넌트(예를 들어, 메모리 SoC(22))는, 요청들이 순서를 벗어나 송신될 수 있는 정도를 결정하기 위하여 순서 노력 필드에 의해 명시되는 바와 같은 순서 노력을 적용할 수 있다.
순서 존은, 채널, 시스템 윈도우, 및 트랜잭션 윈도우의 조합(예를 들어, 채널.syswin.윈도우)에 관련될 수 있다. 채널은 이로부터 요청이 수신된 채널 번호일 수 있다. 시스템 윈도우는, 예를 들어, 시스템 내에서 어떤 SoC가 요청을 발원하였는지를 명시하는 필드들의 선택적인 쌍일 수 있다.
전술한 것을 유념하면, 순서 존에 대하여 큐 깊이가 16인 것으로 가정하면, 2-비트 필드 내에 순서 노력을 지정하는 합리적인 구현예는 다음과 같을 수 있다:
00 - 매 기회마다 재-배열을 허용: 결과 슬롯들이 16의 큐 깊이 내에서 어느 곳이라도 스왑(swap)되는 것을 허용
01 - 상당한 재-배열을 허용: 결과 슬롯들이 11의 큐 깊이 내에서 어느 곳이라도 스왑되는 것을 허용
10 - 일부 재-배열을 허용: 결과 슬롯들이 6의 큐 깊이 내에서 어느 곳이라도 스왑되는 것을 허용
11 - 재-배열 없음: 스왑을 허용하지 않고, 자원들이 유휴상태(idle)인 것을 허용
특정 실시예들에 있어서, 순서 노력을 정의하는 순서 노력 함수는 요청의 연령(age)과 같은 추가적인 변수들을 포함할 수 있다. 예를 들어:
00 - 매 기회마다 재-배열을 허용: 결과 슬롯들이 16의 큐 깊이 내에서 어느 곳이라도 스왑되는 것을 허용
01 - 상당한 재-배열을 허용: 결과 슬롯들이, 요청이 늙은(old) 경우 8 및 요청이 젊은(young) 경우 14의 큐 깊이 내에서 어느 곳이라도 스왑되는 것을 허용
10 - 일부 재-배열을 허용: 결과 슬롯들이, 요청이 늙은 경우 4 및 요청이 젊은 경우 8의 큐 깊이 내에서 어느 곳이라도 스왑되는 것을 허용
11 - 재-배열 없음: 스왑을 허용하지 않고, 자원들이 유휴상태인 것을 허용
여기에서, 스케일러블 프로토콜은 요청들이 늙은 것 또는 젊은 것으로서 지정되는 것을 가능하게 할 수 있다. 예를 들어, 요청은, 요청이 7개 이상의 요청 슬롯들 동안 존재해온 경우 늙은 것으로 간주될 수 있으며, 반면 요청은, 요청이 6개 이하의 요청 슬롯들 동안 존재해온 경우 젊은 것으로 간주될 수 있다.
이상에서 열거된 예들은, 순서 노력이 2-비트 필드 내에서 수량화될 수 있는 가능한 방식들의 작은 서브세트를 예시한다. 순서 노력의 추가적인 정도들은 더 큰 크기의 순서 노력 필드를 사용하여 지정될 수 있다. 임의의 경우에 있어서, 순서 노력 필드는, 순서 노력을 전체 시스템 성능을 튜닝하는데 유용할 수 있는 함수로 만드는 간단한 프로그램가능성(programmability)의 능력을 제공할 수 있다. 특정 실시예에 있어서, 호스트 SoC(12)에 의해 이용되는 순서 노력은, 호스트 SoC(12)가 기동될 때 결정되거나 또는 지정될 수 있다. 즉, 호스트 SoC(12)는 그것이 연결되는 디바이스의 유형 또는 그것이 설계된 산업의 유형을 결정할 수 있으며, 그에 따라서 순서 노력을 결정할 수 있다.
버스 트래픽 조절을 위한 역압(backpressure) 함수
역압은, 버스 트래픽을 수신하는 버퍼(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))에 접근함에 따라 낮춰질 수 있다. 채널최대 및 윈도우최대 필드들은 사용자 또는 스케일러블 프로토콜에 의해 독립적으로 설정될 수 있다. 채널최대 필드는 정의된 최대 송신 레이트에 대응할 수 있다. 예를 들어, 채널최대는 초 당 1x109 요청들로 설정될 수 있다. 윈도우최대 필드는 복수의 미처리 트랜잭션 동작들에 대응할 수 있다. 예시적인 역압 함수는, 윈도우최대 또는 채널최대가 90% 용량인 이후에 요청 레이트를 선형적으로 감소시키는 것을 포함할 수 있다. 이러한 지점에서, 송신 레이트는 0.900*최대에서 100%일 수 있고, 0.995*최대에서 0%까지 선형적으로 변화할 수 있다. 도 16은, 이상에서 설명된 선형적인 함수에 따라 송신 레이트가 어떻게 축소될 수 있는지를 예시한다.
송신 레이트를 선형적으로 축소시키는 것에 더하여, 송신 컴포넌트는 또한 비-선형적인 함수에 따라서 그것의 송신들을 축소시킬 수 있다. 예를 들어, 도 17은, 그것의 송신 레이트를 축소시킬 때 송신 컴포넌트에 의해 이용될 수 있는 하나의 가능한 비-선형적인 커브를 예시한다. 송신 컴포넌트가 도 17에 도시된 커브에 따른 비-선형적인 송신 레이트를 이용하는 것으로 한정되지 않는다는 것이 이해되어야만 한다. 다른 예에 있어서, 비-선형적인 커브는, 유한 단계들에 의해 송신 레이트를 점진적으로 축소시키는 스텝 다운(step down) 커브를 포함할 수 있다.
채널 상에 단지 하나의 트랜잭션 윈도우가 존재하는 경우들에 있어서, 윈도우최대 필드는 채널최대 필드와 관련되지 않을 수 있거나 또는 이와 동일한 것으로 간주될 수 있다. 복수의 트랜잭션 윈도우들이 존재하는 경우들에 있어서, 각각의 개별적인 트랜잭션 윈도우에 대하여 상이한 역압 함수들이 정의될 수 있다. 예를 들어, 이하에서 설명되는 바와 같은 다양한 상이한 메모리 유형들을 사용하는 트랜잭션 윈도우들의 다음의 4개의 예들을 고려해 보도록 한다.
윈도우0 - 제어 및 레지스트리(registry)
윈도우1 - 최저 레이턴시 DRAM
윈도우2 - 정규 DRAM
윈도우3 - NAND
이를 유념하면, 채널의 트래픽에 기초하여 역압 함수가 조절될 수 있는 방식의 예는, 채널 최대(예를 들어, 초 당 1x109 요청들)를 정의하는 것, 역압 함수가 시작할 수 있는 때(예를 들어, 롤백시작(RollbackStart) 0.9 p.u.)를 정의하는 것, 및 역압 함수가 종료할 수 있는 때(예를 들어, 롤백종료(RollbackEnd) 1 p.u.)를 정의하는 것을 포함할 수 있다. 이러한 예에 있어서, 롤백 함수는, 채널 최대에 대응할 수 있는 변수 소위 최대에 적용될 수 있다. 일반적으로, 채널 최대는, 채널 요청 레이트가 0.9 * 채널 최대 이하인 동안(예를 들어, 롤백시작에 이르기까지) 요청들(또는 트랜잭션 순서들)이 전송되는 레이트에 대응한다.
유사한 방식으로, 각각의 개별적인 트랜잭션 윈도우는 개별적인 역압 함수를 이용할 수 있다. 예를 들어, 이상에서 정의된 4개의 예시적인 트랜잭션 윈도우들의 역압 함수들은 다음과 같이 구현될 수 있다:
윈도우0
윈도우0최대 최대의 0.05 p.u.
윈도우0롤백시작 최대의 0.045 p.u.
윈도우0롤백종료 최대의 0.05 p.u.
윈도우1
윈도우1최대 최대의 0.9 p.u.
윈도우1롤백시작 최대의 0.81 p.u.
윈도우1롤백종료 최대의 0.9 p.u.
윈도우2
윈도우2최대 최대의 0.3 p.u.
윈도우2롤백시작 최대의 0.27 p.u.
윈도우2롤백종료 최대의 0.3 p.u.
윈도우3
윈도우3최대 최대의 0.1 p.u.
윈도우3롤백시작 최대의 0.09 p.u.
윈도우3롤백종료 최대의 0.1 p.u.
이상에서 보여진 바와 같이, 역압 함수는, 상호작용하는 다수의 트랜잭션 윈도우들(즉, 다수의 동시적인 프로세스들)이 존재할 때 요청 레이트들을 점진적으로 롤 백할 수 있다. 임의의 경우에 있어서, 송신되는 신호들을 사용하는 것과는 대조적으로, 함수에 따라 조절 동작을 수행함으로써, 스케일러블 프로토콜은 송신되는 신호들이 대역-내(in-band)인지 또는 대역 외(out of band)인지 여부와 관련되지 않을 수 있다. 또한, 수신 컴포넌트 및 송신 컴포넌트가 함수를 구현하기 위한 때를 통신해야 할 필요 없이 동일한 수학적 함수를 구현할 수 있기 때문에, 스케일러블 프로토콜은 각각의 개별적인 버스에 걸쳐서 전송되는 비트들의 양을 추가적으로 감소시킬 수 있다.
특정 실시예들에 있어서, 역압 함수는 또한 각각의 요청의 연령을 고려할 수 있다. 예를 들어, 순서 요청들이 트랜잭션 윈도우 내에 모이는 경우, 수신 컴포넌트는 그 특정 트랜잭션 윈도우에 대한 롤백 한계들을 수정하거나 또는 윈도우최대의 값을 조정할 수 있다.
또 다른 실시예에 있어서, 역압 함수는 또한 큐 깊이를 고려할 수 있다. 즉, 기동 시에, 메모리 SoC(22)는 트랜잭션 윈도우 또는 유사한 것에 제공된 정보에 기초하여 메모리 SoC(22)에 연결된 모듈(들)의 성능을 발견하기 위한 능력을 가질 수 있다. 성능들의 부분은 메모리 SoC(22)에 연결된 수신기(들)의 큐 깊이를 관찰하는 것을 포함할 수 있으며, 이는 아마도 연결된 채널의 공칭 패킷-프로세싱 레이트를 또한 발견할 수 있다. 메모리 SoC(23)가 수신기의 큐들을 추적하지 못할 수 있지만, 메모리 SoC(22)는 수신기들의 큐들의 상태에 관하여 어떤 결정들을 할 수 있다. 예를 들어, 메모리 SoC(22)는 수신 컴포넌트의 패킷-프로세싱 레이트를 초과하는 빠른 연속으로 패킷들을 전송할 수 있는 경우, 메모리 SoC(22)는 수신기 컴포넌트 내의 큐가 성장할 것이라는 것을 예상할 수 있다. 이와 같이, 메모리 SoC(22)가 패킷들이 수신기의 패킷-프로세싱 레이트보다 더 빠르게 전송되고 있다는 것을 결정하는 경우, 메모리 SoC(22)는 수신기로부터 명시적인 피드백을 수신하지 않고 이상에서 설명된 역압 함수들을 적용하기 시작할 수 있다. 다시 말해서, 패킷 송신 레이트가 패킷-패킷 프로세싱 레이트를 초과하는 경우, 메모리 SoC(22)는 패킷 송신 레이트를 감소시키기 시작할 수 있다. 이러한 방식으로, 송신 레이트는 채널들에 메시지들을 부가하지 않고 감소될 수 있다. 일부 실시예들에 있어서, 수신 컴포넌트는, 수신 컴포넌트가 그것의 예상된 레이트로 패킷들을 프로세싱하지 않을 때 페일세이프(failsafe)로서 메모리 SoC(22)에 메시지를 전송할 수 있다.
다른 실시예에 있어서, 수신 컴포넌트는, 버퍼(23)가 그것의 용량을 초과하거나 또는 넘치려고 한다는 것을 송신 컴포넌트에 나타내기 위한 시스템 페일세이프 메커니즘을 포함할 수 있다. 여기에서, 수신 컴포넌트는 이상에서 설명된 부정-수신확인형 메시지와 유사한 메시지를 전송할 수 있다. 이러한 메시지는, 이것이, 버퍼(23)가 패킷을 받아들이지 못하는 것에 기인하여 메시지가 거절되었다는 것을 나타내기 위하여 송신 컴포넌트의 데이터 로그 내에 엔트리를 생성할 수 있다는 것을 제외하면, 부정-수신확인형 메시지와 동일한 효과를 가질 수 있다. 이와 같이, 송신 컴포넌트는 버스 트래픽에서의 지연에 대한 이유를 결정할 수 있다.
본원에서 설명된 실시예들이 다양한 수정들 및 대안적인 형태들에 영향을 받기 쉬울 수 있지만, 도면들에서 예로서 도시된 특정 실시예들이 본원에서 상세하게 설명되었다. 그러나, 본 개시가 개시된 특정 형태들에 한정되도록 의도되지 않는다는 것이 이해되어야만 한다. 오히려, 본 개시는 다음의 첨부된 청구항들에 의해 정의되는 바와 같은 본 개시에서 설명된 기술들 및 시스템의 사상 및 범위 내에 속하는 모든 수정예들, 등가물들, 및 대안예들을 포괄한다.

Claims (27)

  1. 메모리 디바이스로서,
    데이터를 저장하도록 구성된 복수의 메모리 컴포넌트들;
    상기 복수의 메모리 컴포넌트들에 통신가능하게 결합된 프로세서로서, 상기 프로세서는:
    복수의 데이터 동작들과 연관된 복수의 패킷들을 수신하되, 상기 복수의 패킷들의 각각은 개별적인 패킷의 개별적인 데이터 동작과 연관된 메모리 컴포넌트의 유형을 나타내는 트랜잭션 윈도우 필드를 포함하는, 상기 복수의 패킷들을 수신하고; 및
    상기 복수의 패킷들의 각각의 상기 트랜잭션 윈도우 필드 내에 표시된 상기 메모리 컴포넌트의 유형에 기초하여 순서대로 상기 복수의 데이터 동작들을 수행하도록 구성된, 상기 프로세서를 포함하는, 메모리 디바이스.
  2. 청구항 1에 있어서, 상기 프로세서는 상기 복수의 동작들의 제 2 부분 이전에 상기 복수의 동작들의 제 1 부분을 수행하도록 구성되며, 상기 제 1 부분은 상기 메모리 컴포넌트의 유형들의 제 1 메모리 유형과 연관되고, 상기 제 2 부분은 상기 메모리 컴포넌트의 유형들의 제 2 메모리 유형과 연관되는, 메모리 디바이스.
  3. 청구항 2에 있어서, 상기 제 1 메모리 유형은 제 1 레이턴시(latency)를 갖는 요청들의 제 1 세트와 연관되며, 상기 제 2 메모리 유형은 상기 제 1 레이턴시보다 더 큰 제 2 레이턴시를 갖는 요청들의 제 2 세트와 연관되는, 메모리 디바이스.
  4. 청구항 1에 있어서, 상기 프로세서는:
    상기 복수의 데이터 동작들의 제 1 데이터 동작이 수행될 수 있는지 여부를 결정하는 것으로서, 상기 제 1 데이터 동작은 상기 복수의 패킷들의 제 1 패킷 및 제 1 트랜잭션 윈도우에 대응하는, 상기 제 1 데이터 동작이 수행될 수 있는지 여부를 결정하는 것;
    상기 복수의 데이터 동작들의 제 2 데이터 동작을 식별하는 것으로서, 상기 제 2 데이터 동작은 상기 복수의 패킷들의 제 2 패킷 및 제 2 트랜잭션 윈도우에 대응하는, 상기 제 2 데이터 동작을 식별하는 것; 및
    상기 제 1 데이터 동작이 수행될 수 없을 때 상기 제 2 데이터 동작을 수행하는 것으로서, 상기 제 1 트랜잭션 윈도우는 상기 제 2 트랜잭션 윈도우와는 상이한, 상기 제 2 데이터 동작을 수행하는 것에 의해, 상기 복수의 데이터 동작들을 상기 순서대로 수행하도록 구성되는, 메모리 디바이스.
  5. 청구항 4에 있어서, 상기 제 1 데이터 동작은, 상기 제 1 데이터 동작과 연관된 메모리 어드레스가 사용 중일 때 수행될 수 없는, 메모리 디바이스.
  6. 청구항 1에 있어서, 상기 메모리 컴포넌트의 유형들은, 동적 랜덤-액세스 메모리(Dynamic Random-Access Memory; DRAM), 정적 랜덤-액세스 메모리(Static Random-Access Memory; SRAM), NAND 메모리, 또는 이들의 임의의 조합을 포함하는, 메모리 디바이스.
  7. 청구항 1에 있어서, 상기 트랜잭션 윈도우 필드는 상기 복수의 패킷들의 각각에 대한 최소 트랜잭션 크기를 포함하는, 메모리 디바이스.
  8. 청구항 1에 있어서, 상기 프로세서는 상기 복수의 패킷들을 송신했던 다른 프로세서로 재배열(reorder) 메시지를 전송하도록 구성되며, 상기 재배열 메시지는 제 1 순서를 나타내고, 상기 순서는 상기 복수의 패킷들이 송신되었던 순서와는 상이한, 메모리 디바이스.
  9. 시스템으로서,
    프로세서를 포함하는 메모리 디바이스;
    상기 프로세서에 통신가능하게 결합된 수신 컴포넌트로서, 상기 수신 컴포넌트는:
    상기 프로세서로부터 복수의 패킷들을 수신하되, 상기 복수의 패킷들은 제 1 순서로 송신되는, 상기 복수의 패킷들을 수신하며;
    상기 복수의 패킷들에 대응하는 복수의 데이터 동작들이 상기 제 1 순서로 수행되어야만 하는지 여부를 상기 복수의 데이터 동작들과 연관된 메모리 컴포넌트의 이용가능성에 기초하여 결정하고;
    상기 복수의 데이터 동작들이 상기 제 1 순서로 수행되지 않아야만 할 때, 상기 데이터 동작들을 수행하기 위한 제 2 순서를 결정하되, 상기 복수의 패킷들의 각각은 개별적인 패킷의 개별적인 데이터 동작과 연관된 메모리 컴포넌트의 유형을 나타내는 트랜잭션 윈도우와 연관되며, 상기 수신 컴포넌트는, 동일한 트랜잭션 윈도우를 갖는 상기 복수의 패킷들의 부분을 식별함으로써 상기 제 2 순서를 결정하는, 상기 데이터 동작들을 수행하기 위한 제 2 순서를 결정하고; 및
    상기 제 2 순서를 포함하는 재배열 메시지를 상기 메모리 프로세서로 전송하도록 구성된, 상기 수신 컴포넌트를 포함하는, 시스템.
  10. 청구항 9에 있어서, 상기 수신 컴포넌트는, 상기 복수의 데이터 동작들 중 적어도 하나가 이용불가능한 메모리 어드레스 또는 사용 중인 메모리 어드레스에 기인하여 수행될 수 없을 때 상기 복수의 데이터 동작들이 상기 제 1 순서로 수행되지 않아야 한다는 것을 결정하는, 시스템.
  11. 청구항 9에 있어서, 상기 수신 컴포넌트는, 상기 복수의 데이터 동작들 중 적어도 하나가 상기 복수의 데이터 동작들 중 상기 적어도 하나 이전에 수행되는 상기 복수의 데이터 동작들 중 다른 하나에 의존하는지 여부에 기초하여 상기 제 2 순서를 결정하는, 시스템.
  12. 삭제
  13. 청구항 9에 있어서, 상기 수신 컴포넌트는 상기 재배열 메시지를 전송한 이후에 상기 제 2 순서에 따라 상기 프로세서로 복수의 응답 패킷들을 전송하도록 구성되는, 시스템.
  14. 청구항 9에 있어서, 상기 프로세서는, 상기 재배열 메시지를 수신한 이후에 상기 수신 컴포넌트로부터 수신된 복수의 응답 패킷들의 각각을 상기 재배열 메시지에 표시된 순서에 따라 상기 복수의 패킷들의 개별적인 패킷에 연관시키도록 구성되는, 시스템.
  15. 청구항 9에 있어서, 상기 재배열 메시지는, 상기 프로세서가 상기 수신 컴포넌트로부터 대응하는 응답 패킷을 수신하지 않은 상기 복수의 패킷들의 일 부분의 각각의 패킷에 대한 새로운 순서 번호를 포함하는, 시스템.
  16. 청구항 15에 있어서, 상기 새로운 순서 번호는 상기 프로세서에 의해 수신될 것으로 예상되는 복수의 응답 패킷들의 큐 내의 상대적인 위치와 연관되는, 시스템.
  17. 방법으로서,
    프로세서를 통해, 복수의 패킷들에 기초하여 복수의 데이터 동작들을 수행하도록 구성된 수신 컴포넌트로 상기 복수의 패킷들을 송신하는 단계;
    상기 프로세서를 통해, 상기 수신 컴포넌트로부터 송신되는 복수의 응답 패킷들에 관한 재배열 메시지를 수신하는 단계로서, 상기 재배열 메시지는 상기 수신 컴포넌트로 송신된 상기 복수의 패킷들 중 일 부분과 연관되며, 상기 프로세서는 상기 복수의 패킷들의 상기 부분의 임의의 패킷과 연관된 응답 패킷을 수신하지 않은, 단계;
    상기 프로세서를 통해, 상기 수신 컴포넌트로부터 상기 복수의 응답 패킷들을 수신하는 단계; 및
    상기 프로세서를 통해, 상기 복수의 응답 패킷들의 각각을 상기 복수의 패킷들의 상기 부분의 대응하는 패킷과 연관시키는 단계를 포함하는, 방법.
  18. 청구항 17에 있어서, 상기 재배열 메시지는, 큐 내의 상기 복수의 패킷들의 상기 부분의 상대적인 순서에 기초하여 상기 복수의 응답 패킷들의 각각이 상기 복수의 패킷들의 상기 부분의 상기 대응하는 패킷과 연관되는 순서를 포함하는, 방법.
  19. 청구항 17에 있어서,
    큐 내의 상기 복수의 패킷들의 상기 부분의 상대적인 순서에 기초하여 상기 복수의 패킷들의 상기 부분의 각각의 패킷을 재명명하는 단계;
    상기 복수의 패킷들의 상기 부분에 대응하는 상기 복수의 데이터 동작들의 일 부분을 수행하기 위하여 선호되는 순서에 기초하여 상기 상대적인 순서의 수정된 순서를 생성하는 단계; 및
    상기 수정된 순서에 기초하여 상기 재배열 메시지를 생성하는 단계를 포함하는, 방법.
  20. 시스템으로서,
    복수의 데이터 동작들과 연관된 복수의 패킷들을 생성하도록 구성된 프로세서; 및
    수신 컴포넌트로서:
    상기 프로세서로부터 상기 복수의 패킷들을 수신하되, 상기 복수의 패킷들은 상기 복수의 데이터 동작들이 수행될 순서에 대응하는 제 1 순서로 수신되는, 상기 복수의 패킷들을 수신하며;
    상기 복수의 데이터 동작들이 상기 순서로 수행될 수 없을 때 복수의 재배열 메시지들을 전송하고;
    상기 복수의 재배열 메시지들이 문턱값을 초과할 때, 상기 복수의 패킷들의 일 부분의 각각의 수신된 패킷에 시퀀스 번호를 첨부하며;
    상기 부분의 각각의 수신된 패킷에 대하여 응답 패킷을 생성하되, 상기 부분의 각각의 수신된 패킷에 대한 상기 응답 패킷은 개별적인 시퀀스 번호를 포함하는, 상기 응답 패킷을 생성하고; 및
    상기 부분의 각각의 수신된 패킷에 대한 상기 응답 패킷을 상기 프로세서로 송신하도록 구성된, 상기 수신 컴포넌트를 포함하는, 시스템.
  21. 청구항 20에 있어서, 개별적인 시퀀스 번호는, 개별적인 수신된 패킷에 대응하는 개별적인 데이터 동작과 연관된 메모리의 유형에 기초하여 라운드 로빈(round robin) 방식에 따라서 상기 복수의 패킷들의 상기 부분의 각각의 수신된 패킷에 할당되는, 시스템.
  22. 청구항 21에 있어서, 상기 프로세서는:
    상기 복수의 패킷들의 상기 부분의 각각의 수신된 패킷에 대한 상기 응답 패킷을 수신하고; 및
    상기 개별적인 시퀀스 번호에 기초하여 상기 복수의 패킷들의 상기 부분의 각각의 수신된 패킷에 대한 상기 응답 패킷을 상기 복수의 패킷들의 상기 부분의 개별적인 패킷에 연관시키도록 구성되는, 시스템.
  23. 청구항 22에 있어서, 상기 수신 컴포넌트는 상기 복수의 패킷들 중 하나에서 오류가 식별될 때 부정-수신확인(not-acknowledge) 패킷을 송신하도록 구성되며, 상기 부정-수신확인 패킷은 제 2 시퀀스 번호를 포함하는, 시스템.
  24. 명령어들을 포함하는 유형적이고 비-일시적인 기계-판독가능 저장 매체로서, 상기 명령어들은:
    제 1 순서로 복수의 패킷들을 수신하고;
    상기 복수의 패킷들의 각각의 패킷 내에 제공된 재배열 선호사항들에 관한 정보에 기초하여, 상기 복수의 패킷들에 대응하는 복수의 데이터 동작들이 상기 제 1 순서로 수행되어야만 하는지 여부를 결정하며;
    상기 복수의 데이터 동작들이 상기 제 1 순서로 수행되지 않아야만 할 때, 상기 데이터 동작들을 수행하기 위한 제 2 순서를 결정하고; 및
    상기 제 2 순서를 포함하는 재배열 메시지를 상기 복수의 패킷들을 송신했던 프로세서로 전송하도록 구성되는, 유형적이고 비-일시적인 기계-판독가능 저장 매체.
  25. 청구항 24에 있어서, 상기 정보는 재배열이 허용되는지 또는 허용되지 않는지 여부를 나타내는, 유형적이고 비-일시적인 기계-판독가능 저장 매체.
  26. 청구항 24에 있어서, 상기 정보에 기초하여 상기 제 2 순서를 생성하도록 구성된 명령어들을 포함하며, 상기 정보는 상기 복수의 데이터 동작들을 재배열하는 정도를 나타내는, 유형적이고 비-일시적인 기계-판독가능 저장 매체.
  27. 청구항 24에 있어서, 상기 정보는 상기 복수의 패킷들의 각각의 패킷의 2-비트 필드에 제공되는, 유형적이고 비-일시적인 기계-판독가능 저장 매체.
KR1020167036974A 2014-06-02 2015-06-01 스케일러블 메모리 시스템 프로토콜 내에서 패킷 송신들을 재배열하기 위한 시스템들 및 방법 KR101796413B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462006668P 2014-06-02 2014-06-02
US62/006,668 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
US14/724,489 2015-05-28
PCT/US2015/033571 WO2015187575A1 (en) 2014-06-02 2015-06-01 Systems and methods for reordering packet transmissions in a scalable memory system protocol

Publications (2)

Publication Number Publication Date
KR20170005498A KR20170005498A (ko) 2017-01-13
KR101796413B1 true KR101796413B1 (ko) 2017-12-01

Family

ID=54701759

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020167036182A KR102197401B1 (ko) 2014-06-02 2015-06-01 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들
KR1020167036974A KR101796413B1 (ko) 2014-06-02 2015-06-01 스케일러블 메모리 시스템 프로토콜 내에서 패킷 송신들을 재배열하기 위한 시스템들 및 방법
KR1020167036180A KR102196747B1 (ko) 2014-06-02 2015-06-01 메모리 시스템에서 데이터 구조들을 세그먼트하기 위한 시스템들 및 방법들

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167036182A KR102197401B1 (ko) 2014-06-02 2015-06-01 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020167036180A KR102196747B1 (ko) 2014-06-02 2015-06-01 메모리 시스템에서 데이터 구조들을 세그먼트하기 위한 시스템들 및 방법들

Country Status (6)

Country Link
US (16) US9747048B2 (ko)
EP (6) EP3149602B1 (ko)
KR (3) KR102197401B1 (ko)
CN (8) CN106489136B (ko)
TW (6) TWI570569B (ko)
WO (6) WO2015187572A1 (ko)

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
EP3866415B1 (en) * 2016-02-19 2022-11-02 ViaSat Inc. Methods and systems for multi-level network capacity allocation
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
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems
US10908820B2 (en) * 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems
GB2569276B (en) 2017-10-20 2020-10-14 Graphcore Ltd Compiler method
US10963003B2 (en) 2017-10-20 2021-03-30 Graphcore Limited Synchronization in a multi-tile processing array
GB2569275B (en) 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
GB201717295D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Synchronization in a multi-tile processing array
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
US11003375B2 (en) 2018-05-15 2021-05-11 Micron Technology, Inc. Code word format and structure
US10831653B2 (en) 2018-05-15 2020-11-10 Micron Technology, Inc. Forwarding code word address
US10409680B1 (en) * 2018-05-24 2019-09-10 Micron Technology, Inc. Progressive length error control code
US10496478B1 (en) * 2018-05-24 2019-12-03 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
TWI821373B (zh) * 2018-08-23 2023-11-11 美商阿爾克斯股份有限公司 網路運算環境中的第一跳轉閘道的冗餘機制系統
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
WO2021133692A1 (en) 2019-12-26 2021-07-01 Micron Technology, Inc. Truth table extension for stacked memory systems
WO2021133687A1 (en) 2019-12-26 2021-07-01 Micron Technology, Inc. Techniques for non-deterministic operation of a stacked memory system
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
US12004009B2 (en) * 2020-05-04 2024-06-04 Qualcomm Incorporated Methods and apparatus for managing compressor memory
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 富士通株式会社 セルの転送レート制御装置およびその方法
US6952401B1 (en) * 1999-03-17 2005-10-04 Broadcom Corporation Method for load balancing in a network switch
US6782490B2 (en) * 1999-03-17 2004-08-24 At&T Corp. Network-based service for the repair of IP multicast sessions
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
WO2002027519A1 (en) 2000-09-29 2002-04-04 Alacritech, Inc. Intelligent network storage interface system and devices
US20020159552A1 (en) * 2000-11-22 2002-10-31 Yeshik Shin Method and system for plesiosynchronous communications with null insertion and removal
US6745310B2 (en) 2000-12-01 2004-06-01 Yan Chiew Chow Real time local and remote management of data files and directories 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 삼성전자주식회사 패킷 통신시스템에서 매체 접속 제어 계층 엔터티들 간의 시그널링 방법
US7536473B2 (en) * 2001-08-24 2009-05-19 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
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
WO2006005229A1 (fr) * 2004-07-13 2006-01-19 Utstarcom Telecom Co., Ltd. Procede de transmission de paquets de signaux sans fil dans une station de base radio
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
EP1913463A2 (en) * 2005-08-03 2008-04-23 SanDisk Corporation Management of memory blocks which directly store data files
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
WO2008049425A1 (en) * 2006-10-24 2008-05-02 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
WO2009097681A1 (en) 2008-02-04 2009-08-13 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
JP5341176B2 (ja) * 2008-04-24 2013-11-13 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 誤り率管理
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
US8542588B2 (en) * 2008-06-25 2013-09-24 Qualcomm Incorporated Invoking different wireless link rate selection operations for different traffic classes
KR101431760B1 (ko) * 2008-06-25 2014-08-20 삼성전자주식회사 Ecc 알고리즘을 이용한 플래시 메모리 장치 및 그구동방법
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 한국전자통신연구원 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치
US20110185018A1 (en) * 2008-10-09 2011-07-28 Toru Osuga Content delivery system, content delivery method and computer program
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
JP5342658B2 (ja) * 2009-03-06 2013-11-13 アスペラ,インク. 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 华为技术有限公司 数据传输速率的自适应调整方法、装置及系统
US8238244B2 (en) * 2009-08-10 2012-08-07 Micron Technology, Inc. Packet deconstruction/reconstruction and link-control
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
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
JP5404798B2 (ja) * 2009-09-21 2014-02-05 株式会社東芝 仮想記憶管理装置及び記憶管理装置
WO2011041269A2 (en) * 2009-09-30 2011-04-07 Samplify Systems, Inc. Enhanced multi-processor waveform data exchange 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
US20110299589A1 (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
CN107093464A (zh) * 2010-07-13 2017-08-25 桑迪士克科技有限责任公司 后台存储器系统接口的动态优化
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
WO2012040649A2 (en) 2010-09-24 2012-03-29 Texas Memory Systems, Inc. High-speed memory system
WO2012042432A1 (en) * 2010-10-01 2012-04-05 Koninklijke Philips Electronics N.V. Device and method for scheduling data packet transmissions in wireless networks
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 データ処理装置及び半導体装置
US8966191B2 (en) * 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface 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
EP3364304B1 (en) * 2011-09-30 2022-06-15 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
US8954822B2 (en) * 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US9048876B2 (en) * 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
CN104011660B (zh) * 2011-12-22 2017-03-01 英特尔公司 用于处理位流的基于处理器的装置和方法
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
US8694698B2 (en) * 2012-04-12 2014-04-08 Hitachi, Ltd. Storage system and method for prioritizing data transfer access
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
WO2014000172A1 (en) * 2012-06-27 2014-01-03 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
CN107045479B (zh) * 2012-10-22 2020-09-01 英特尔公司 高性能互连物理层
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
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
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
WO2014205119A1 (en) * 2013-06-18 2014-12-24 The Regents Of The University Of Colorado, A Body Corporate Software-defined energy communication networks
US9967778B2 (en) * 2013-06-19 2018-05-08 Lg Electronics Inc. Reception method of MTC device
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
US20210247914A1 (en) 2021-08-12
US20150347015A1 (en) 2015-12-03
US20150347226A1 (en) 2015-12-03
CN106471485A (zh) 2017-03-01
US20170168728A1 (en) 2017-06-15
KR102197401B1 (ko) 2021-01-04
CN106471460B (zh) 2019-05-10
US11194480B2 (en) 2021-12-07
US20150350082A1 (en) 2015-12-03
EP3149592B1 (en) 2022-05-04
TW201610687A (zh) 2016-03-16
TWI545497B (zh) 2016-08-11
US9600191B2 (en) 2017-03-21
US20190102095A1 (en) 2019-04-04
TWI570569B (zh) 2017-02-11
US20210141541A1 (en) 2021-05-13
CN109032516A (zh) 2018-12-18
US11461017B2 (en) 2022-10-04
EP3149595A1 (en) 2017-04-05
WO2015187575A1 (en) 2015-12-10
TW201614476A (en) 2016-04-16
EP3149599A1 (en) 2017-04-05
CN106489136B (zh) 2020-03-06
EP3149586A4 (en) 2018-08-29
TWI547799B (zh) 2016-09-01
CN106471474A (zh) 2017-03-01
EP3149585A4 (en) 2018-04-11
US20210247915A1 (en) 2021-08-12
US20150347225A1 (en) 2015-12-03
TWI582588B (zh) 2017-05-11
CN106471474B (zh) 2019-08-20
US20170329545A1 (en) 2017-11-16
US9823864B2 (en) 2017-11-21
CN106489134B (zh) 2018-08-14
US20200097190A1 (en) 2020-03-26
EP3149595B1 (en) 2022-11-16
EP3149585A1 (en) 2017-04-05
US9690502B2 (en) 2017-06-27
WO2015187574A1 (en) 2015-12-10
EP3149592A4 (en) 2018-01-03
EP3149586B1 (en) 2022-07-20
US11003363B2 (en) 2021-05-11
EP3149602A4 (en) 2017-08-09
TW201617868A (zh) 2016-05-16
US9747048B2 (en) 2017-08-29
US11531472B2 (en) 2022-12-20
US20200150884A1 (en) 2020-05-14
US20150347019A1 (en) 2015-12-03
US11526280B2 (en) 2022-12-13
EP3149602A1 (en) 2017-04-05
KR20170012400A (ko) 2017-02-02
CN106471485B (zh) 2019-01-08
TW201617879A (zh) 2016-05-16
EP3149602B1 (en) 2019-05-22
WO2015187576A1 (en) 2015-12-10
WO2015187577A1 (en) 2015-12-10
TWI625632B (zh) 2018-06-01
KR20170005498A (ko) 2017-01-13
CN109032516B (zh) 2021-10-22
US10572164B2 (en) 2020-02-25
EP3149585B1 (en) 2020-08-12
US11461019B2 (en) 2022-10-04
CN106575257B (zh) 2019-05-28
US10921995B2 (en) 2021-02-16
EP3149592A1 (en) 2017-04-05
CN110262751A (zh) 2019-09-20
KR20170012399A (ko) 2017-02-02
CN106471460A (zh) 2017-03-01
TWI554883B (zh) 2016-10-21
CN113971004A (zh) 2022-01-25
EP3149599A4 (en) 2018-01-03
EP3149586A1 (en) 2017-04-05
US10146457B2 (en) 2018-12-04
EP3149595A4 (en) 2018-03-28
US9733847B2 (en) 2017-08-15
TW201610688A (zh) 2016-03-16
US10540104B2 (en) 2020-01-21
CN106489134A (zh) 2017-03-08
EP3149599B1 (en) 2022-09-21
US20150347048A1 (en) 2015-12-03
KR102196747B1 (ko) 2020-12-31
US9696920B2 (en) 2017-07-04
CN106489136A (zh) 2017-03-08
WO2015187572A1 (en) 2015-12-10
WO2015187578A1 (en) 2015-12-10
US20200097191A1 (en) 2020-03-26
US20170300382A1 (en) 2017-10-19
TW201614501A (en) 2016-04-16
CN106575257A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
KR101796413B1 (ko) 스케일러블 메모리 시스템 프로토콜 내에서 패킷 송신들을 재배열하기 위한 시스템들 및 방법
CN113971004B (zh) 用于在可扩展存储器系统协议中包封数据的系统及方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant