KR102197401B1 - 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들 - Google Patents

확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR102197401B1
KR102197401B1 KR1020167036182A KR20167036182A KR102197401B1 KR 102197401 B1 KR102197401 B1 KR 102197401B1 KR 1020167036182 A KR1020167036182 A KR 1020167036182A KR 20167036182 A KR20167036182 A KR 20167036182A KR 102197401 B1 KR102197401 B1 KR 102197401B1
Authority
KR
South Korea
Prior art keywords
data
transaction
packet
memory
field
Prior art date
Application number
KR1020167036182A
Other languages
English (en)
Other versions
KR20170012400A (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 KR20170012400A publication Critical patent/KR20170012400A/ko
Application granted granted Critical
Publication of KR102197401B1 publication Critical patent/KR102197401B1/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
    • 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/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
    • 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/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/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

Abstract

메모리 디바이스(14)는 데이터를 저장하는 메모리 구성요소(24, 26, 28) 및 프로세서(22)를 포함한다. 프로세서(22)는 메모리 구성요소(24, 26, 28)와 연관된 하나 이상의 데이터 패킷(30)을 생성할 수 있다. 각각의 데이터 패킷(30)은 각각의 데이터 패킷(30)의 페이로드(34)의 제1 크기 및 각각의 데이터 패킷(30)에서 오류 제어 코드의 제2 크기를 표시한 데이터를 포함하는 트랜잭션 유형 필드(32)를 포함할 수 있다. 각각의 패킷(30)은 또한 페이로드(34)를 포함하는 페이로드(34) 필드 및 오류 제어 코드를 포함하는 오류 제어 코드 필드(36)를 가질 수 있다. 프로세서(22)는 데이터 패킷들(30)을 요청 구성요소로 송신할 수 있으며, 따라서 요청 구성요소는 각각의 데이터 패킷(30)에서 트랜잭션 유형 필드(32)의 데이터에 기초하여 각각의 데이터 패킷(30)의 페이로드(34) 필드 및 오류 제어 필드를 식별한다.

Description

확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR TRANSMITTING PACKETS IN A SCALABLE MEMORY SYSTEM PROTOCOL}
본 출원은 2014년 6월 2일에 출원된, "확장 가능 메모리 시스템 프로토콜을 위한 시스템들 및 방법들"이라는 제목의, 미국 가 특허 출원 번호 제62/006,668호에 대한 우선권을 주장하는 정규 출원이며, 이것은 여기에서 참조로서 통합된다. 본 출원은 또한 2015년 5월 28일에 출원된, "메모리 시스템의 효율성들을 개선하기 위한 시스템들 및 방법들"이라는 제목의, 미국 특허 출원 번호 제14/724,558호에 관련되며, 이것은 또한 여기에서 참조로서 통합된다.
본 개시는 일반적으로 메모리 디바이스들을 사용하여 데이터 동작들(예로서, 판독, 기록)을 수행하기 위해 사용된 메모리 시스템 프로토콜에 관한 것이다. 보다 구체적으로, 본 개시는 다수의 메모리 및 프로세싱 조합들을 가능하게 하고, 비트-효율 데이터 전송 동작들을 제공하며 다양한 버스 유형들(예로서, 전기, 광학)과 일치하는 패킷-기반 확장 가능 프로토콜에 관한 것이다.
이 섹션은 이하에서 설명되고 및/또는 주장되는, 본 개시의 다양한 양상들에 관련될 수 있는 기술의 다양한 양상들을 판독자에게 소개하도록 의도된다. 이러한 논의는 본 개시의 다양한 양상들의 보다 양호한 이해를 용이하게 하기 위해 배경 정보를 판독자에게 제공하는데 도움이 된다고 믿어진다. 따라서, 이들 서술들은 종래 기술의 허용들로서가 아닌, 이러한 관점에서 판독될 것이라는 것이 이해되어야 한다.
종래의 프로토콜들은 일반적으로 그것들의 이전 것들과 비교하여 비교적 낮은 고장률들을 갖고 메모리 디바이스들 사이에서 패킷들을 송신한다. 그러나, 산업들이 메모리 디바이스들 및 다른 구성요소들 사이에서 데이터의 패킷들을 이동시킬 때 수반된 에너지의 양을 최소화하는 것을 목표로 함에 따라, 패킷 송신의 무결성을 유지하면서, 최소 양의 에너지를 사용하여 데이터의 패킷들을 효율적으로 이동시키는 프로토콜들을 사용하는 것이 바람직하다.
본 개시의 다양한 양상들은 다음의 상세한 설명을 판독할 때 및 도면들을 참조할 때 보다 양호하게 이해될 수 있다.
도 1은 실시예에 따른, 컴퓨팅 시스템의 예의 블록도를 예시한다;
도 2는 실시예에 따른, 도 1의 컴퓨팅 시스템의 부분일 수 있는 메모리 디바이스의 예의 예시한다;
도 3은 실시예에 따른, 도 1의 컴퓨팅 시스템 내에서 송신될 수 있는 패킷의 패킷 레벨도를 예시한다;
도 4는 실시예에 따른, 도 1의 컴퓨팅 시스템 내에서 송신될 수 있는 패킷의 상세한 패킷 레벨도를 예시한다;
도 5는 실시예에 따른, 도 2의 메모리 디바이스의 부분인 다양한 유형들의 메모리들에 대한 트랜잭션 윈도우들을 할당하기 위한 방법의 흐름도를 예시한다;
도 6은 실시예에 따른, 고 지연시간 판독 동작들에 대한 2-스테이지 응답의 예를 예시한다;
도 7은 실시예에 따른, 고 지연시간 직접 메모리 액세스 동작에 대한 1-스테이지 응답의 예를 예시한다;
도 8은 실시예에 따른, 확장 가능 프로토콜이 2개의 18-비트 요청들을 함께 패킹하는 레인 패킹 예를 예시한다;
도 9는 실시예에 따른, 송신을 위한 패킷을 생성하기 위한 방법의 흐름도를 예시한다;
도 10은 실시예에 따른, 레인 패킹 기법에 따라 송신될 수 있는 다수의 패킷들을 묘사한 블록도를 예시한다;
도 11은 실시예에 따른, 레인 패킹 기법에 따라 패킷들을 수신하기 위한 방법의 흐름도를 예시한다;
도 12는 실시예에 따른, 패킷들을 수신한 구성요소에 의해 수행되는 동작들을 재배열하기 위한 방법의 흐름도를 예시한다;
도 13은 실시예에 따른, 도 12의 방법을 참조하여 패킷들이 어떻게 재배열되는지를 도시하는 블록도를 예시한다;
도 14는 실시예에 따른, 패킷들을 수신한 구성요소에 의해 수행되는 동작들을 재배열하기 위한 또 다른 방법의 흐름도를 예시한다;
도 15는 실시예에 따른, 송신 구성요소로부터 전송된 요청들의 송신 레이트를 낮추기 위한 방법의 흐름도를 예시한다;
도 16은 실시예에 따른, 선형 감소 곡선을 묘사하는 그래프를 예시한다; 및
도 17은 실시예에 따른, 비-선형 감소 곡선을 묘사하는 그래프를 예시한다.
하나 이상의 특정 실시예들이 이하에서 설명될 것이다. 이들 실시예들의 간결한 설명을 제공하기 위한 노력으로, 실제 구현의 모든 특징들이 명세서에 설명되는 것은 아니다. 임의의 이러한 실제 구현의 개발 시, 임의의 엔지니어링 또는 설계 프로젝트에서처럼, 다수의 구현-특정 결정들이, 하나의 구현에서 또 다른 것으로 달라질 수 있는, 시스템-관련 및 비즈니스-관련 제약들을 준수하는 것과 같은, 개발자들의 특정 목표들을 달성하기 위해 이루어져야 한다는 것이 이해되어야 한다. 게다가, 이러한 개발 노력은 복잡하며 시간 소모적일 수 있지만, 그럼에도 불구하고 본 개시의 이득을 가진 통상의 숙련자들에 대한 설계, 제작, 및 제조의 보통의 일일 것임이 이해되어야 한다.
확장 가능 메모리 시스템 프로토콜
이하에서 상세히 논의될 바와 같이, 본 개시는 일반적으로 확장 가능 메모리 시스템 프로토콜에 관한 것이다. 즉, 확장 가능 메모리 시스템 프로토콜은 전송되는 데이터 패킷들(예로서, 요청들, 응답들)의 특성들에 기초하여 특정한 동작들을 조정할 수 있다. 일 실시예에서, 확장 가능 메모리 시스템 프로토콜("확장 가능 프로토콜")은 메모리 디바이스들, 컴퓨팅 디바이스들 등 사이에서 데이터의 패킷들의 효율적인(예로서, 전력 효율적, 비트 효율적) 송신을 가능하게 하는 패킷-기반 프로토콜일 수 있다. 확장 가능 프로토콜은 오토마타(Automata) 프로세서들, 지능형 메모리 반도체(Processor-in-Memory), 네트워크 디바이스들, 저장 기기들, 계층적 메모리, 추상형 메모리 등과 같은 다양한 유형들의 메모리 및 프로세서들과의 다수의 조합들로 구현될 수 있다. 여기에서 사용된 바와 같이, 프로세서들은 대응하는 전기 디바이스 상에서 실행 가능한 지시들을 수행할 수 있는 임의의 적절한 프로세서를 포함할 수 있다. 확장 가능 프로토콜은 또한 데이터 센터 스위치들/라우터들, 네트워크 라우터들, 이동 디바이스들, 저장 디바이스들, 오토마타 프로세서들, 스트림 프로세서들, 지능형 메모리 반도체, 작업-이동-프로세서들, 빅 데이터, 빅 그래프, 보안 메모리, 가상 네트워크, 일반 추상형 메모리(예로서, 동적 랜덤-액세스 메모리(DRAM), NAND, 및 최근에 생겨난 메모리들) 등을 포함한 광범위한 디바이스들을 가능하게 할 수 있다.
특정한 실시예들에서, 확장 가능 프로토콜은 최저의 적정한 확장 가능 프로토콜 오버헤드를 유지하면서 다양한 메모리 및 프로세서들 사이에서 데이터 패킷들의 전달을 용이하게 하도록 설계될 수 있다. 다시 말해서, 확장 가능 프로토콜은 확장 가능 프로토콜을 통해 전송된, 전부는 아니더라도, 대부분의, 비트가 바로 송신되는 대응 데이터 패킷의 부분이라는 점에서 데이터 패킷들의 비트 효율적인 전송을 제공하도록 설계될 수 있다. 예를 들면, 이하에서 보다 상세히 논의될 바와 같이, 확장 가능 프로토콜은 각각의 패킷들에 관련되지 않은 0들로 신호를 패딩하지 않고 요청 패킷들이 함께 패킹될 수 있게 하며, 그에 의해 버스의 송신 레인들을 통해 전송되는 데이터 패킷들의 비트 효율을 최대화한다.
데이터 패킷들을 전송하기 위해 비트-효율적인 메커니즘을 제공하는 것 외에, 확장 가능 프로토콜은 전기 또는 광학 버스들과 같은, 다수의 버스 유형들과 일치할 수 있다. 게다가, 확장 가능 프로토콜은 인코딩, 레인 카운팅, 채널 카운팅, 속도, 스타일, 시스템의 인스턴스화 카운트 등을 포함한 각각의 버스에 관하여 다양한 동작들을 제공할 수 있을 것이다.
확장 가능 프로토콜
앞서 말한 것을 고려하여, 확장 가능 프로토콜은 패킷 실패들이 드물도록(예로서, < 1e-6) 성공적인 트랜잭션들을 제공하기 위해 최적화될 수 있다. 확장 가능 프로토콜은 또한 핸들링될 수 있는 패킷 송신 유형들, 크기들, 및 상이한 패킷 크기들의 수 사이에서 신중한 트레이드오프를 제공할 수 있다.
상기 논의된 바와 같이, 산업들은 데이터 움직임 에너지를 최소화하는 데 더 초점이 맞춰진다. 즉, 메모리 디바이스들 사이에서 데이터 패킷들을 이동시키는데 소비된 에너지는 최소화되어야 한다. 이와 같이, 확장 가능 프로토콜은, 온당한 범위 내에서, 다른 비트 또는 메시지들로부터 식별될 수 있거나 또는 그 외 불필요할 수 있는 특정한 비트 및 메시지들을 제거할 수 있다. 예를 들면, 확장 가능 프로토콜은 이미 수신기에게 알려져 있을 수 있는 정보에 관련된 데이터를 송신하기 위한 디바이스에 대한 요구를 제거할 수 있다.
게다가, 효율적인 데이터 움직임 동작들을 제공하기 위해, 확장 가능 프로토콜은 "메모리로 전송"되는 트랜잭션들을 가능하게 할 수 있다. 확장 가능 프로토콜은 또한 국소적 동작들을 전송할 수 있으며, 여기에서 내부 데이터 흐름은 외부 제어 동작들을 갖고, 외부 제어 동작들에 비교하여 비교적 낮다. 더욱이, 확장 가능 프로토콜은 각각의 패킷에서 송신되는 데이터(예로서, 페이로드)의 양에 기초하여 조정하는 동적 필드 크기를 사용하여 오버헤드를 최소화하는 오류 제어 전략을 구현할 수 있다.
확장 가능 프로토콜은 또한 데이터를 운반하기 위해 최소 수의 필드들을 사용하도록 설계될 수 있다. 이와 같이, 확장 가능 프로토콜은 모든 패킷이 모든 이용 가능한 필드들을 이용하지 않을 수 있으므로 필드 크기 조정 및 유연성을 허용할 수 있다.
확장 가능 프로토콜은 또한 저-지연시간 및 고-지연시간 데이터의 공존을 가능하게 하도록 설계될 수 있다. 예를 들면, 확장 가능 프로토콜은 송신 고-지연시간 데이터 사이에서 저-지연시간 데이터의 송신을 인터레이싱하기 위한 능력을 제공할 수 있다.
확장 가능 프로토콜의 설계는 가변 패킷 크기가 각각의 패킷의 단일 필드에서 결정될 수 있다는 점에서 간단하며 일반적인 것으로서 특성화될 수 있다. 뿐만 아니라, 확장 가능 프로토콜은 복잡한 트랜잭션들 및 동작들을 수행할 수 있는 채로 있으면서 그것의 동작들에 대하여 단순성을 유지할 수 있다. 또한, 확장 가능 프로토콜은 그것이 현재 제공하도록 설계되지 않을 수 있는 미래 기능들을 가능하게 하기 위해 충분히 탄력적일 수 있다.
특정한 실시예들에서, 확장 가능 프로토콜은 패킷들이 국소적 순서화 기법들을 사용하여 전송되는 순서를 제한할 수 있다. 즉, 확장 가능 프로토콜은 특정한 전역적 동기화 순서화 규칙들 등을 시행하지 않을 수 있다. 확장 가능 프로토콜이 추상적인 채로 있는 관념에 충실하기 위해, 확장 가능 프로토콜은 특수한 디바이스를 갖고 또는 상이한 유형들의 채널 속성들을 갖고 동작들을 가능하게 할 수 있다.
앞서 말한 것을 고려하여, 본 개시는 앞서 언급된 이점들을 제공하기 위해 확장 가능 프로토콜 내에서 구현될 수 있는 다수의 시스템들 및 기술들을 설명한다. 이하에서 설명된 특정한 시스템들 또는 기술들이 다른 시스템들 또는 기술들에 대하여 독립적으로 설명되지만, 여기에서 설명된 시스템들 및 기술들의 각각은 여기에서 또한 설명된 다양한 다른 시스템들 및 기술들을 갖고 구현될 수 있다는 것이 주의되어야 한다.
확장 가능 프로토콜을 사용한 컴퓨팅 및 메모리 시스템들
이제 도면들로 가면, 도 1은 여기에서 설명된 다양한 기술들 및 시스템들을 이용할 수 있는 컴퓨팅 시스템(10)의 블록도를 예시한다. 컴퓨팅 시스템(10)은 컴퓨터, 페이저, 셀룰러 전화, 전자 수첩(personal organizer), 제어 회로 등과 같은, 다양한 컴퓨팅 디바이스들 중 임의의 것일 수 있다. 컴퓨팅 시스템(10)은 다수의 메모리 디바이스들(14)에 결합될 수 있는 호스트 시스템 온 칩(SoC)(12)을 포함할 수 있다. 호스트 SoC(12)는 컴퓨터 또는 다른 전자 시스템의 모든 구성요소들을 단일 칩으로 통합하는 통합 회로(IC)일 수 있다. 이와 같이, 호스트 SoC(12)는 컴퓨팅 시스템(10)에서 시스템 기능들 및 요청들의 프로세싱을 제어할 수 있는, 마이크로프로세서와 같은, 하나 이상의 프로세서들을 포함할 수 있다.
상기 언급된 바와 같이, 호스트 SoC(12)는 메모리 디바이스들(14)에 결합될 수 있다. 특정한 실시예들에서, 호스트 SoC(12)는 채널들(16)을 통해 메모리 디바이스들(14)에 결합될 수 있다. 채널들(16)은 버스들, 전기 배선 등을 포함할 수 있다.
도 2는 메모리 디바이스(14)의 실시예의 블록도를 묘사한다. 메모리 디바이스(14)는 디지털 데이터를 보유하도록 설계된 임의의 저장 디바이스를 포함할 수 있다. 메모리 디바이스(14)는 휘발성 메모리 및 비-휘발성 메모리를 포함한 매우 다양한 메모리 구성요소들을 포함할 수 있다. 휘발성 메모리는 동적 랜덤 액세스 메모리(DRAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있다. 게다가, 휘발성 메모리는 단일 인라인 메모리 모듈들(SIMM들) 또는 이중 인라인 메모리 모듈들(DIMM들)과 같은, 다수의 메모리 모듈들을 포함할 수 있다.
비-휘발성 메모리는 EPROM과 같은, 판독-전용 메모리(ROM), 및/또는 휘발성 메모리와 함께 사용될 플래시 메모리(예로서, NAND)를 포함할 수 있다. 부가적으로, 비-휘발성 메모리는 테이프 또는 디스크 드라이브 메모리와 같은 고 용량 메모리를 포함할 수 있다. 이해될 바와 같이, 휘발성 메모리 또는 비-휘발성 메모리는 코드(예로서, 지시들)를 저장하기 위한 비-일시적 유형의 기계-판독 가능한 매체로 고려될 수 있다.
도 2에 도시된 바와 같이, 특정한 실시예들에서, 메모리 디바이스(14)는 메모리 디바이스(14) 상에 저장된 메모리 구성요소들에 밀착 결합된,지능형 메모리 반도체(PIM) 또는 컴퓨터 프로세서(CPU)와 같은, 임의의 적절한 프로세서일 수 있는 시스템 온 칩(SoC)(22)을 포함할 수 있다. 일반적으로, 메모리 SoC(22)는 메모리 디바이스(14)의 메모리 구성요소들과 동일한 실리콘 칩 상에 있을 수 있다. 메모리 디바이스(14)로 프로세싱 및 메모리 구성요소들을 병합함으로써, 메모리 SoC(22)는 데이터 요청들 및 응답들이 메모리 구성요소들 및 호스트 SoC(12) 사이에서 송신 및 수신되는 방식을 관리할 수 있다. 특정한 실시예들에서, 메모리 SoC(22)는 지연시간을 감소시키며 대역폭을 증가시키기 위해 메모리 구성요소들 사이에서의 트래픽을 제어할 수 있다. 이해될 바와 같이, 호스트 SoC(12) 및 메모리 SoC(22)는 여기에서 설명된 실시예들에 따라 메모리 구성요소들 및 다른 디바이스들 사이에서의 송신들을 제어할 때 확장 가능 메모리 시스템 프로토콜을 이용할 수 있다. 이와 같이, 확장 가능 메모리 시스템 프로토콜은 메모리 디바이스(14) 및 호스트 SoC(12) 사이에서의 채널들(16) 상에서, 뿐만 아니라 메모리 구성요소들 및 메모리 SoC(22) 사이에서의 채널들(29) 상에서 동작할 수 있다.
특정한 실시예들에서, 메모리 디바이스(14)는 또한 버퍼(23)를 포함할 수 있다. 버퍼(23)는 메모리 SoC(22)에 의해 수신된 하나 이상의 패킷들을 저장할 수 있다. 메모리 SoC(22)가 어떻게 버퍼(23)를 사용할 수 있는지에 관한 부가적인 상세들은 도 15 내지 도 17을 참조하여 이하에서 설명될 것이다. 예로서, 메모리 디바이스(14)는 NAND 메모리들(24), 감소-지연시간 동적 랜덤 액세스 메모리(RLDRAM)(26), 이중 데이터 레이트 4세대 동기식 동적 랜덤-액세스 메모리(DDR4)(28) 등과 같은 메모리 유형들을 포함할 수 있다.
특정한 실시예들에서, 호스트 SoC(12) 및 메모리 SoC(22)는 메모리 구성요소들, 레지스터들 등을 통해 제공된 컴퓨터-실행 가능한 지시들에 기초하여 다양한 동작들을 수행할 수 있다. 메모리 구성요소들 또는 저장 장치는 프로세서-실행 가능한 코드, 데이터 등을 저장하기 위해 미디어로서 작용할 수 있는 임의의 적절한 제조 물품들일 수 있다. 이들 제조 물품들은 현재 개시된 기술들을 수행하기 위해 호스트 Soc(12) 또는 메모리 SoC(22)에 의해 사용된 프로세서-실행 가능한 코드를 저장할 수 있는 컴퓨터-판독 가능한 미디어(즉, 임의의 적절한 형태의 메모리 또는 저장 장치)를 나타낼 수 있다. 메모리 및 저장 장치는 또한 데이터, 데이터의 분석 등을 저장하기 위해 사용될 수 있다. 메모리 및 저장 장치는 여기에서 설명된 다양한 기술들을 수행하기 위해 호스트 SoC(12) 또는 메모리 SoC(22)에 의해 사용된 프로세서-실행 가능한 코드를 저장할 수 있는 비-일시적 컴퓨터-판독 가능한 미디어(즉, 임의의 적절한 형태의 메모리 또는 저장 장치)를 나타낼 수 있다. 비-일시적은 단지 미디어가 유형이며 신호가 아님을 나타낸다는 것이 주의되어야 한다.
확장 가능 프로토콜에 관련된 다양한 양상들에 대한 다음의 설명은 호스트 SoC(12) 및 메모리 SoC(22)에 대하여 수행되는 것으로서 여기에서 설명되지만, 여기에서 설명된 시스템들 및 기술들의 모두는 임의의 적절한 디바이스를 사용하여 수행될 수 있다는 것이 주의되어야 한다. 즉, 확장 가능 프로토콜은 두 개의 프로세서들, 두 개의 메모리 모듈들, 프로세서 및 메모리 모듈 등 사이에서의 통신들과 같은, 임의의 두 개의 디바이스들 사이에서의 통신을 용이하게 할 수 있다.
확장 가능 프로토콜에서 패킷들의 패킷-레벨도
메모리 구성요소들을 수반한 요청들 및 응답들을 송신할 때 확장 가능 메모리 시스템 프로토콜을 이용하기 위해, 메모리 SoC(22)는 도 3에 예시된 패킷(30)의 패킷 레벨도에 따라 구조화된 데이터의 패킷들을 전송할 수 있다. 도 3에 도시된 바와 같이, 패킷(30)은 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 오류 제어 코드(ECC) 필드(36)를 포함할 수 있다. 트랜잭션 유형 필드(32)는 송신의 유형, 송신되는 패킷의 유형, 또는 둘 모두를 나타내는 데이터를 포함할 수 있다. 트랜잭션 유형 필드(32)는 또한 데이터 페이로드에서 비트의 수 및 ECC 필드에서 비트의 수를 나타내며, 그에 의해 전체 패킷에서 비트의 수를 나타내도록 패킷 크기를 나타낼 수 있다. 특정한 실시예들에서, 트랜잭션 유형 필드(32)는 우회적인 방식으로 페이로드 필드(34) 및 ECC 필드(36)의 크기를 나타낼 수 있다. 예를 들면, 트랜잭션 유형 필드(32)에 저장된 데이터는 룩업 테이블에 대한 인덱스로서 작용할 수 있다. 룩업 테이블은 페이로드 필드(34) 및 ECC 필드(36)의 크기들에 관한 정보를 제공할 수 있다. 이와 같이, 메모리 SoC(22)는, 일 예에서, 패킷(30)을 수신하며 페이로드 필드(34) 및 ECC 필드(36)의 크기들을 결정하기 위해 메모리 디바이스(14) 내에 저장될 수 있는 룩업 테이블에 대한 인덱스로서 트랜잭션 유형 필드(32)에 저장된 데이터를 사용할 수 있다.
특정한 실시예들에서, 트랜잭션 유형 필드(32)는 패킷이, 채널들(16), 채널들(29) 등을 포함할 수 있는, 요청 버스(Q) 또는 응답 버스(S) 상에서 송신되는지에 기초하여 상이한 유형들의 패킷들을 특정할 수 있다. 일반적으로, 요청 버스(Q) 및 응답 버스(S)는 별개의, 단방향의, 또는 공통의 입력들/출력들일 수 있다. 요청 버스(Q)는 일반적으로 q개의 레인들을 포함하며, 응답 버스(S)는 일반적으로 s개의 레인들을 포함한다.
요청 버스(Q) 상에서 송신된 패킷들(30)에 대한 예시적인 트랜잭션 유형 필드들(32)은 판독 동작들(예로서, 8uRead, 8uRead2, varRead, 여기에서 u는 8-비트 유닛 또는 9-비트 유닛 또는 가능하게는 비-정수 유닛 크기의 데이터일 수 있다), 메시지 데이터(예로서, 메시지), 판독-수정-기록(RMW) 동작들(예로서, RMW1A, RMW2A, RMW3A, RMW4A), 데이터 세트들(예로서, 32uData, 64uData, 128uData, 256uData), 패턴 기록 동작들(예로서, 8uPatternWrite, 16uPatternWrite), 기록-과-가능 동작들(예로서, 8uWriteWithEnables, 16uWriteWithEnables), 기록 동작들(예로서, 8uWrite, 16uWrite, 32Write, 48uWrite, 64Write, 80uWrite, 96uWrite, 112uWrite, 128Write, 256Write) 등을 포함할 수 있다. 32Wrte 동작들 및 64Write 동작들을 제공하는 것은 최대 패킷 크기를 선택할 때 시스템 설계자에게 보다 많은 융통성을 제공할 수 있다. 확장 가능 프로토콜은, 일 실시예에서, 256유닛의 제한을 가질 수 있지만, 보다 작은 최대 패킷 크기를 사용하는 것이 시스템 지연시간을 도울 수 있다. 32uWrite 및 32Write 사이에서의 차이는 32uWrite가 단일 고정 크기이며 트랜잭션크기(TransactionSize)가 패킷에 포함되지 않는다는 것이라는 것이 이해되어야 한다. 다른 한편으로, 32Write는 트랜잭션크기를 포함하며 따라서 원래 요청 패킷에 포함된 32U 청크가 아닌, 데이터의 부가적인 32U 청크들을 수반할 수 있다. 요청 버스(Q)에 대한 상기 열거된 트랜잭션 유형 예들을 주목하면, 요청 버스(Q)를 통해 송신된 패킷들(30)은 총 26개의 네이티브 트랜잭션들(예로서, 8uRead, 메시지, RMW1A 등)을 포함할 수 있으며, 그 각각은 전역적(즉, 패킷들이 유닛에서 유닛으로 중계될 수 있는 다수의 CPU 모듈들 및/또는 다수의 메모리 디바이스 모듈들을 포함하는 시스템) 또는 국소적 시스템들(즉, 패킷들이 중계 없이 유닛들 사이에서 점 대 점으로 이동하는 몇 개의 모듈들을 포함하는 시스템)에 대해 5-비트 필드를 사용하여 표현될 수 있다. 이와 같이, 일 실시예에서, 요청 버스(Q) 상에서 패킷(30)에 대한 트랜잭션 유형 필드(32)는 5 비트일 수 있다.
동일한 방식으로, 응답 버스(S) 상에서 송신된 패킷들(30)에 대한 예시적인 트랜잭션 유형 필드들(32)은 메시지 데이터(예로서, 메시지), 데이터세트들(예로서, 8uData, 16uData, 32uData, 48uData, 64uData, 80uData, 96uData, 112uData, 128uData, 256uData) 등을 포함할 수 있다. 다시, 응답 버스(S)에 대해 상기 열거된 트랜잭션 유형 예들을 주목하면, 응답 버스(S)를 통해 송신된 패킷들(30)은 총 11개의 네이티브 트랜잭션들(예로서, 메시지, 8uData 등)을 포함할 수 있으며, 그 각각은 국소적 시스템을 위해 4-비트 또는 5-비트 필드를 사용하여 표현될 수 있다. 이와 같이, 일 실시예에서, 응답 버스(S) 상에서 패킷(30)에 대한 트랜잭션 유형 필드(32)는 4 비트일 수 있다.
26개의 요청 버스(Q) 트랜잭션 유형들 및 11개의 응답 버스(S) 트랜잭션 유형들이 동일한 트랜잭션 유형들(예로서, 메시지, 128uData, 256uData) 중 5개를 포함하므로, 요청 버스(Q) 및 응답 버스(S)에 의해 사용된 트랜잭션 유형들의 총 수는 32일 수 있다. 이들 32개의 트랜잭션 유형들은 따라서 5-비트 필드로 표현될 수 있다. 트랜잭션 유형들에 관한 부가적인 상세들은 이하에서 추가로 논의될 것이다.
다시 도 3을 참조하면, 패킷(30)은 또한 페이로드 필드(34) 및 오류 정정 코드(ECC) 필드(36)를 포함할 수 있다. 상기 언급된 바와 같이, 페이로드 필드(34) 및 ECC 필드(36)의 각각의 크기는 트랜잭션 유형 필드(32)에서의 데이터에 기초하여 결정될 수 있다. 예들로서, 페이로드 필드(34)는 대략 45 비트 및 2093 비트 사이에 있을 수 있으며 ECC 필드(36)는 대략 6 비트 및 37 비트 사이에 있을 수 있다. 페이로드 필드(34)는 각각 요청 또는 응답 버스를 통해 전송되는 요청 또는 응답을 나타내는 데이터를 포함할 수 있다.
ECC 필드(36)는 수신 구성요소에 의해 수신된 패킷(30)이 임의의 오류들을 포함하는지를 결정하기 위해 오류 제어 코드를 포함할 수 있다. 이와 같이, 오류 제어 코드는 중복 데이터 또는 패리티 데이터를 메시지에 부가하는 것과 같은, 다양한 알고리즘들을 포함할 수 있으며, 따라서 원래 데이터는 송신의 프로세스 동안, 또는 저장 시, 다수의 오류들이 도입될 때조차 수신 구성요소에 의해 복원될 수 있다. 일반적으로, 오류 제어 코드는 코드의 제한들 내에서 오류를 검출하기 위한 능력을 제공하며 오류가 검출될 때, 잘못된 패킷을 재송신하는 것과 같은, 추가 동작을 나타낼 수 있다.
트랜잭션 유형 필드
상기 언급된 바와 같이, 확장 가능 프로토콜은 다양한 유형들의 동작들을 보다 효율적으로 수행하기 위해 트랜잭션 유형 필드를 갖는 패킷들을 사용할 수 있다. 일반적으로, 확장 가능 프로토콜은 임의의 메모리 유형을 이용하기 위해 추상형 메모리 아키텍처를 가능하게 하며 단일 추상 프로토콜을 사용하여 다양한 유형들의 데이터 프로세싱을 통합할 수 있다. 이를 고려하면, 트랜잭션 유형 필드(32)는 트랜잭션 유형 필드(32)가 두 개의 별개의 정보의 조각들을 제공하므로 확장 가능 프로토콜이 다양한 유형들의 데이터 프로세싱을 수행하도록 허용하기 위한 유용한 데이터의 조각일 수 있다. 즉, 트랜잭션 유형 필드(32)는 두 개의 데이터 필드들(즉, 유형 및 크기)을 프로토콜에서 최소 가능한 비트 카운트 점유를 위한 하나로 조합한다.
이하에서 도시될 바와 같이, 확장 가능 프로토콜은 송신 효율을 위해 가변 크기 패킷들을 지원할 수 있다. 이와 같이, 시스템이 비동기화되는 것을 방지하기 위해 수신 구성요소에 대한 패킷의 크기를 표시하는 것이 유용할 수 있다. 여기에서, 트랜잭션 유형 필드(32)는 수행되는 시스템 트랜잭션의 유형을 식별하는 단일 필드를 제공할 수 있으며 트랜잭션 유형에 의해 패킷 크기를 암시적으로 정의할 수 있다. 다시 말해서, 트랜잭션 유형 필드(32)는 송신 구성요소에 의해 요청된 트랜잭션의 유형을 나타낼 수 있으며 수신 구성요소는 그 후 특정된 트랜잭션 유형에 기초하여 대응하는 패킷(예로서, 페이로드 필드(34) 및 ECC 필드(36))의 크기를 결정할 수 있다. 이와 같이, 트랜잭션 유형 필드(32)는 정보를 운반하기 위해 비트-효율적 방식을 제공하기 위해 확장 가능 프로토콜에 의해 이용된 이중-목적 필드일 수 있다.
특정한 실시예들에서, 트랜잭션 유형 필드(32)는 또한 페이로드 필드(34)에서 제공될 수 있는 데이터에 관한 부가적인 정보를 표시할 수 있다. 예를 들면, 트랜잭션 유형 필드(32)의 값에 기초하여, 트랜잭션 윈도우 정보(윈도우), 어드레스 정보(어드레스), 우회 레벨들(레벨들) 정보, 메시지 유형 정보, 원 데이터, 및 다른 유형들의 정보가 페이로드 필드(34)의 부분인 것으로 확인될 수 있다. 페이로드 필드(34)의 부분일 수 있는 정보에 관한 상세들이 이하에서 보다 상세히 논의될 것이다.
확장 가능 프로토콜은 하나 이상의 요청 버스 Q 트랜잭션들 및 하나 이상의 응답 버스 S 트랜잭션들을 가진 시스템에서 이용될 수 있다. 요청 버스(Q) 및 응답 버스(S)는 각각 5-비트 필드 및 4-비트 필드를 갖는 것으로 설명되었지만, 요청 버스(Q) 및 응답 버스(S)는 다양한 상이한 비트 크기들을 갖도록 설계될 수 있다는 것이 주의되어야 한다. 예로서, 요청 버스(Q) 트랜잭션들은 5-비트 필드(예로서, 00000, 00001, ..., 11110, 11111)를 사용하여 표시될 수 있으며, 따라서 5-비트 필드와 연관될 수 있는 가능한 트랜잭션 유형들은 다음과 같다(여기에서 데이터 유닛(u) 크기는 8 비트이다):
01011 - 8uRead - 8B 데이터 판독 동작은, 부가적인 필드들(예로서, 페이로드 필드(34) 내에서의 서브-필드들)을 제공한다: 윈도우, 어드레스, 레벨들(우회 레벨들)
01101 - varRead - 가변 데이터 크기 판독 동작은,부가적인 필드들을 제공한다: 트랜잭션크기, 윈도우, 어드레스, 레벨들
00000 - 메시지 - 일반 메시지는, 부가적인 필드들(윈도우, 메시지유형, 데이터(데이터는 필드 크기에 의해서만 제한되며, 예로서, Nack 메시지 유형에 대한 데이터는 데이터시퀀스(DataSequence), 발생트랜잭션유형(OriginatingTransactionType), 발생윈도우(OriginatingWindow)를 포함할 수 있다))을 제공한다
01110 - RMW1A - 통합된 단일 어드레스를 가진 판독-수정-기록 요청은, 부가적인 필드들을 제공한다: 트랜잭션크기, 윈도우, 어드레스, 연산부호, 즉시데이터
01100 - 8uRead2 - 두 개의 8B 데이터 판독 동작들은, 부가적인 필드들을 제공한다: 제1_윈도우, 제1_어드레스, 제1_레벨들, 제2_레벨들, 제2_어드레스
10110 - 8uWrite - 8B 데이터를 포함한 기록 요청은 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 8B 데이터
10010 - 8uWriteP - 한 번 이상 기록될 8B 데이터를 포함한 기록 요청은 부가적인 제공한다: 윈도우, 어드레스, 트랜잭션크기, 레벨들, 8B 데이터
01111 - RMW2A - 통합된 두 개의 어드레스들을 가진 판독-수정-기록 요청은 부가적인 제공한다: 트랜잭션크기, 제1_윈도우, 제1_어드레스, 연산부호, 즉시데이터, 제2_윈도우, 제2_어드레스
10100 - 8uWriteEn - 기록가능비트(WriteEnableBits) 및 8B 데이터를 가진 기록은 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 8가능 비트, 8B 데이터
10000 - RMW3A - 통합된 3개의 어드레스들을 가진 판독-수정-기록 요청은 부가적인 필드들을 제공한다: 트랜잭션크기, 제1_윈도우, 제1_어드레스, 연산부호, 즉시데이터, 제2_윈도우, 제2_어드레스, 제3_윈도우, 제3_어드레스
10111 - 16uWrite - 16B 데이터를 포함한 기록 요청은 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 16B 데이터
10011 - 16uWriteP - 한 번 이상 기록될 16B 데이터를 포함한 기록 요청은 부가적인 필드들을 제공한다: 윈도우, 어드레스, 트랜잭션크기, 레벨들, 16B 데이터
10101 - 16uWriteEn - 기록가능비트 및 16B 데이터를 가진 기록은 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 16 가능 비트, 6B 데이터
10001 - RMW4A - 통합된 4개의 어드레스들을 가진 판독-수정-기록 요청은 부가적인 필드들을 제공한다: 트랜잭션크기, 제1_윈도우, 제1_어드레스, 연산부호, 즉시데이터, 제2_윈도우, 제2_어드레스, 제3_윈도우, 제3_어드레스, 제4_윈도우, 제4_어드레스
00011 - 32uData - 연장된 데이터 패킷은 부가적인 데이터 필드들을 제공한다: 윈도우, 32B 데이터. 데이터 시퀀스 번호는 연장된 데이터 패킷들이 순서대로 송신되며, 따라서 수신기가 시퀀스를 첨부할 수 있기 때문에 명확하게 송신되지 않는다는 것을 주의하자. 후속 NACK이 요구된다면, 내포된 시퀀스 번호는 참조로서 사용된다.
11000 - 32Write - 32B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 32B 데이터, 트랜잭션크기
11001 - 48uWrite - 48B 데이터를 포함한 기록 요청은 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 48B 데이터
00101 - 64uData - 연장된 데이터 패킷은, 부가적인 필드들을 제공한다: 윈도우, 64B 데이터. 데이터 시퀀스 번호는 연장된 데이터 패킷들이 순서대로 송신되며, 따라서 수신기가 시퀀스를 첨부할 수 있기 때문에 명확하게 송신되지 않는다는 것을 주의하자. 후속 NACK이 요구된다면, 내포된 시퀀스 번호는 참조로서 사용된다.
11010 - 64Write - 64B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 64B 데이터, 트랜잭션크기
11011 - 80uWrite - 80B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 80B 데이터
11100 - 96uWrite - 96B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 96B 데이터
11101 - 112uWrite - 112B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 112B 데이터
01001 - 128uData - 연장된 데이터 패킷은, 부가적인 필드들을 제공한다: 윈도우, 128B 데이터. 데이터 시퀀스 번호는 연장된 데이터 패킷들이 순서대로 송신되며, 따라서 수신기가 시퀀스를 첨부할 수 있기 때문에 명확하게 송신되지 않는다는 것을 주의하자. 후속 NACK이 요구된다면, 내포된 시퀀스 번호는 참조로서 사용된다.
11110 - 128Write - 128B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 128B 데이터, 트랜잭션크기
01010 - 256uData - 연장된 데이터 패킷은, 부가적인 필드들을 제공한다: 윈도우, 256B 데이터. 데이터 시퀀스 번호는 연장된 데이터 패킷들이 순서대로 송신되며, 따라서 수신기가 시퀀스를 첨부할 수 있기 때문에 명확하게 송신되지 않는다는 것을 주의하자. 후속 NACK이 요구된다면, 내포된 시퀀스 번호는 참조로서 사용된다.
11111 - 256Write - 256B 데이터를 포함한 기록 요청은, 부가적인 필드들을 제공한다: 윈도우, 어드레스, 레벨들, 256B 데이터, 트랜잭션크기
열거된 예시적인 트랜잭션 유형들은 5-비트 트랜잭션 유형, 4-비트 트랜잭션 크기, 3-비트 윈도우, 48-비트 어드레스, 7-비트 데이터 시퀀스 번호, 및 각각의 트랜잭션 유형에 대해 구체적으로 서술되는 데이터 필드에서의 추가 비트를 가정할 때 다음의 패킷 크기의 순서로 제공된다(임의의 의도되지 않은 순서화 오류들이 없다면). 게다가, 상기 언급된 바와 같이, 패킷(30)은 ECC 필드(36)를 포함할 수 있으며, 이것은 종래의 프로토콜들에서처럼 고정된 크기일 수 있다. 그러나, 이해될 바와 같이, 특정한 실시예들에서, ECC 필드(36)는 이하에서 보다 상세히 논의될 바와 같이 가변 크기일 수 있다.
앞서 말한 것을 고려하여, 응답 버스(S) 트랜잭션들은 4-비트 필드(예로서, 0000, 0001, ..., 1110, 1111)를 사용하여 표시될 수 있다. 그러나, 트랜잭션 유형 필드(32)가 5 비트이면, 트랜잭션 유형 필드(32)는 간단히 추가 선행 제로를 포함할 수 있다. 응답 버스(S) 트랜잭션들에 대한 예시적인 4-비트 트랜잭션 유형들은 다음을 포함할 수 있다:
0000 - 메시지 - 일반 메시지는, 부가적인 필드들을 제공한다: 윈도우, 메시지유형, 데이터(완료, 재배열, NACK, 및 기타와 같은 다수의 메시지 유형들이 있다는 것을 주의하자)
0001 - 8uData - 8B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 8B 데이터
0010 - 16uData - 16B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 16B 데이터
0011 - 32uData - 32B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 32B 데이터
0100 - 48uData - 48B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 48B 데이터
0101 - 64uData - 64B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 64B 데이터
0110 - 80uData - 80B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 80B 데이터
0111 - 96uData - 96B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 96B 데이터
1000 - 112uData - 112B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 112B 데이터
1001 - 128uData - 128B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 128B 데이터
1010 - 256uData - 256B 데이터 응답은, 부가적인 필드들을 제공한다: 윈도우, 256B 데이터
요청 버스(Q) 트랜잭션들에 대해 상기 열거된 예시적인 트랜잭션 유형들처럼, 상기 예시적인 응답 버스(S) 트랜잭션들은 요청 버스(Q) 상에서의 5-비트 트랜잭션 유형, 응답 버스(S) 상에서의 4-비트 트랜잭션 유형, 4-비트 트랜잭션 크기, 3-비트 윈도우, 48-비트 어드레스, 7-비트 데이터 시퀀스 번호, 및 각각의 트랜잭션 유형에 대해 구체적으로 서술되는 데이터 필드에서의 추가 비트를 가정할 때 다음의 패킷 크기의 순서로 열거된다.
상기 도시된 바와 같이, 각각의 트랜잭션 유형은 개개의 필드 크기 가정들에 의존하여 상이한 길이 패킷과 연관될 수 있다. 그 결과, 확장 가능 프로토콜은 패킷 크기를 표시하기 위해 부가적인 필드를 사용하는 것을 회피할 수 있다. 반대로, 8-비트 플릿(flit)들을 가진 프로토콜에서, 요청 버스(Q) 패킷들의 플릿 카운트는 다음과 같이, 트랜잭션 유형의 순서에 있을 것이다: 8, 8, 9, 11, 13, 16, 16, 17, 18, 21, 24, 25, 26, 27, 41, 57, 73, 89, 105, 121, 132, 138, 260, 266. 이러한 프로토콜은 그 후 각각의 패킷의 플릿 카운트를 표시하기 위해 크기가 9 비트일 수 있는 패킷 크기 필드를 포함할 수 있다. 대안적으로, 패킷 크기 필드는 24개의 상이한 길이들의 각각을 구별하기 위해 크기가 5 비트일 수 있으며 그 후 전환 함수가 정확한 플릿 카운트를 결정하기 위해 사용될 수 있다. 종래의 프로토콜들과 달리, 확장 가능 프로토콜은 패킷 크기 필드를 이용하지 않을 수 있다. 대신에, 시스템은 트랜잭션 유형에 기초하여 패킷의 크기를 결정하기 위해 전환 함수를 사용할 수 있으며 그 후 프로토콜 비트를 저장할 수 있다.
트랜잭션 윈도우들
오류 제어 코드들에 관하여 개선된 비트-효율을 제공하는 것 외에, 확장 가능 프로토콜은 그것들 각각의 트랜잭션 유형들에 따라 패킷들을 조직하며 그것들 각각의 트랜잭션 유형들에 기초하여 특정한 순서에 따라 조직된 패킷들을 송신할 수 있다. 종래의 프로토콜들에서, 요청들은 그것들이 송신된 시간에 따라 순서화될 수 있다. 이 경우에, 제1 요청이 높은 지연시간을 수반하며 다음의 요청(즉, 제2 요청)이 낮은 지연시간을 수반한다면, 제2 요청은 그것이 제1 요청보다 더 빨리 완료될 수 있을지라도 제1 요청이 끝나길 기다려야 할 수 있다. 그 결과, 제1 요청은 버스를 막히게 할 수 있다. 다시 말해서, 제1 요청은, 낮은 지연시간 요청들이 보다 높은 지연시간 요청들보다 더 빨리 해결될 수 있을지라도, 버스가 비교적 낮은 지연시간 요청들에 응답하는 것을 방지할 수 있다.
버스 내에서 상이한 유형들의 트랜잭션 요청들을 혼합하는 보다 효율적인 방식을 제공하기 위해, 확장 가능 프로토콜은 요청들이 제공되는 순서를 결정하기 위해 트랜잭션 윈도우들을 사용할 수 있다. 트랜잭션 윈도우는 가상 어드레스 공간을 사용하여 구현된 가상 채널일 수 있다. 각각의 트랜잭션 윈도우는 NAND 및 DRAM과 같은, 각각의 메모리 디바이스와 연관될 수 있다. 이와 같이, 단일 트랜잭션 윈도우는 지연시간, 대역폭, 입도, 지속성 등과 같은, 동일한 특성들을 가진 메모리 또는 메모리들과 연관될 수 있다.
일반적으로, 트랜잭션 윈도우는 각각의 특정한 트랜잭션에 대한 특정한 세트의 관계 규칙들에 관련된 정보를 제공할 수 있다. 상기 언급된 바와 같이, 트랜잭션 윈도우 데이터는 특정한 트랜잭션들에 대한 패킷들을 송신 및 수신하기 위해 사용되는 물리 버스(예로서, 채널들(29))의 레인들의 세트를 특정할 수 있다. 트랜잭션 윈도우에 의해 특정된 레인들의 세트는 메모리 디바이스(14)에 액세스 가능한 가상 채널로서 불리울 수 있다. 여기에서 설명된 채널들(29)은 데이터가 전송될 수 있는 하나 이상의 레인들을 포함한다는 것이 주의되어야 한다. 패킷들의 송신 또는 수신에 관련된 특정한 특징들(예로서, 순서화)을 특성화하기 위해 트랜잭션 윈도우 데이터를 사용하여, 확장 가능 프로토콜은 프로세서들 사이에서 패킷들의 송신을 보다 양호하게 관리할 수 있다.
예를 들면, 메모리 디바이스의 각각의 유형이 상이한 지연시간을 가지므로, 각각의 메모리 디바이스들의 각각의 지연시간들에 기초하여 다양한 유형들의 메모리 디바이스들(14) 및 호스트 SoC(12) 사이에서 버스 트래픽의 흐름을 관리하는 것은 유익할 수 있다. 예로서, DRAM 디바이스들은 일반적으로 빠른 지연시간들(예로서, 랜덤 요청으로부터 50ns)을 갖지만, NAND 디바이스들은 일반적으로 랜덤 요청 후 오류 정정을 갖고 느린 지연시간들(예로서, 500us)을 갖는다. SRAM 버퍼들은 10ns의 보다 빠른 지연시간을 갖는다. 이를 고려하여, 확장 가능 프로토콜은 각각의 메모리 디바이스에 대한 트랜잭션 윈도우를 지정할 수 있다. 일 실시예에서, 확장 가능 프로토콜은 각각의 트랜잭션 윈도우를 지정하기 위해 두 개의 필드들을 사용할 수 있다: 48-비트 어드레스 및 3-비트 윈도우 (즉, 윈도우 0 내지 윈도우 7을 어드레싱하는). 도 4는 패킷(30)에서 트랜잭션 윈도우를 지정하는 두 개의 필드들을 묘사하는 블록도를 예시한다. 도 4에 도시된 바와 같이, 트랜잭션 윈도우 필드(42) 및 어드레스 윈도우 필드(44)는 페이로드 필드(34)의 부분일 수 있다. 트랜잭션 윈도우 필드(42)는 지정된 트랜잭션 윈도우를 특정할 수 있으며 어드레스 윈도우 필드(44)는 특정된 트랜잭션 윈도우와 연관된 48-비트 어드레스를 특정할 수 있다. 48-비트 어드레스는 가상 채널(즉, 윈도우)에 할당된 가상 어드레스일 수 있다. 일 실시예에서, 가상 어드레스 공간은 하드 디스크 드라이브 또는 몇몇 다른 저장 디바이스 상에 위치된 물리 어드레스를 언급할 수 있다. 이와 같이, 메모리 디바이스는 물리적으로 이용 가능한 것보다 많은 데이터를 저장하기 위한 능력을 가질 수 있다.
트랜잭션 윈도우 필드(42) 및 어드레스 윈도우 필드(44) 외에, 패킷은 시작 비트(46) 및 우회 레벨 필드(48)를 포함할 수 있다. 시작 비트(46)는 비트의 스트림에서 패킷의 시작을 표시할 수 있다. 우회 레벨 필드(48)는 페이로드 필드(34)의 부분일 수 있으며 각각의 트랜잭션이 포함할 수 있는 우회 레벨들의 수를 표시하는 값을 제공할 수 있다. 시작 비트 필드(46) 및 우회 레벨 필드(48)에 관한 부가적인 상세들은 이하에서의 다른 섹션들에서 보다 상세히 논의될 것이다.
일반적으로, 메모리 디바이스의 각각의 유형은 상이한 트랜잭션 윈도우에 할당될 수 있다. 예들로서, DRAM0은 윈도우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)은 DRAM 메모리 디바이스에 대응하는, 윈도우0의 부분이다. 트랜잭션들(2 및 7)은, 다른 한편으로, NAND 메모리 디바이스에 대응하는, 윈도우3의 부분이다. 상기 요청들을 수신할 때, 수신 구성요소는 각각의 트랜잭션에 대해 특정된 각각의 트랜잭션 윈도우들에 따라 수립된 순서화 규칙들을 사용하여 수신된 요청들에 응답할 수 있다. 이와 같이, 수신 구성요소는 송신 구성요소 및 수신 구성요소 사이에서 국소적 순서화 프로토콜을 제공하기 위해 트랜잭션 윈도우들을 사용할 수 있다.
일 실시예에서, 특정한 트랜잭션 윈도우에 대해 특정된 순서화 규칙들은 각각의 트랜잭션 윈도우와 연관된 각각의 지연시간에 기초할 수 있다. 즉, 수신 구성요소는 보다 긴 지연시간들을 가진 요청들에 응답하기 전에 보다 낮은 지연시간들을 수반하는 요청들에 먼저 응답할 수 있다. 수신 구성요소는 각각의 트랜잭션 윈도우 사이에서의 지연시간 차이들을 알고 있을 수 있으므로, 수신 구성요소는 그것들의 윈도우 지정들에 따라 트랜잭션들을 수신하도록 결정할 수 있다. 이와 같이, 상기 설명된 예시적인 트랜잭션들을 다시 참조하면, 확장 가능 프로토콜을 구현한 수신 구성요소는 다음과 같이 상기 요청들에 응답할 수 있다:
(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)를 필드에 부가하는 것과 같은, 다양한 정교한 프로토콜 문제들을 부가하지 않고 동일한 버스 상에서 메모리의 상이한 클래스들의 존재에 의해 방해받지 않는다. 이러한 방식으로, 확장 가능 프로토콜은 비교적 간단한 방식으로 최소 수의 비트를 사용하여 복잡한 시스템 동작을 제공한다.
또 다른 예에서, 수신 구성요소는 각각의 트랜잭션에 대해 특정된 대응하는 트랜잭션 윈도우에 기초하여 국소적 순서화 기법을 이용할 수 있다. 다음의 트랜잭션에 대해:
(1) 판독8b.윈도우1.어드레스A
(2) 판독8b.윈도우2.어드레스B
(3) 판독8b.윈도우1.어드레스C
수신 구성요소는 먼저 트랜잭션(1)을 수신하며 어드레스A가 이용 가능한지를 결정할 수 있다. 어드레스A가 바쁘면, 수신 구성요소는 큐에 트랜잭션(1)을 저장하며 어드레스A가 이용 가능하게 되기를 기다릴 수 있다. 그 동안에, 수신 구성요소는 그 후 트랜잭션(2)을 수신하며 어드레스B가 이용 가능하다면 판독 동작을 수행할 수 있다. 수신 구성요소는 그 후 트랜잭션(3)을 수신하며 그것이 트랜잭션(1)과 동일한 윈도우와 연관되므로, 수신 구성요소는 그것들이 동일한 트랜잭션 윈도우의 부분이기 때문에 트랜잭션(1) 전에 트랜잭션(3)을 수행하는 것에 관하여 임의의 순서화 충돌들이 있는지를 결정할 수 있다. 동일한 방식으로, 수신 구성요소는 그것이 상이한 트랜잭션 윈도우의 부분이기 때문에 트랜잭션(2)과의 임의의 잠재적인 순서화 충돌 또는 임의의 잠재적인 순서화 충돌의 결정을 무시할 수 있다. 이와 같이, 트랜잭션 윈도우들은 상이한 트랜잭션들이 수행되는 동안 수행될 데이터 동작들에 대한 보다 효율적인 방식을 제공할 수 있다. 즉, 트랜잭션 윈도우들은 동작들이 관련된 동작들 또는 메모리 디바이스들과 논리적으로 그룹핑되도록 허용하므로, 동작들은 다양한 순서들로 수행될 수 있으며, 그에 의해 트랜잭션들을 완료하기 위한 유연한 방식을 제공한다. 반대로, 종래의 프로토콜들은 통상적으로 상이한 트랜잭션들이 다양한 순서들로 수행될 수 있거나 또는 전용 프로토콜 필드에서 전송된 우선순위 정보의 포함에 기초하여 트랜잭션들을 프로세싱할 수 있을지라도 트랜잭션들이 전송된 순서에 따라 수행되도록 데이터 동작들의 엄격한 순서를 강요한다.
일 실시예에서, 확장 가능 프로토콜은 각각의 윈도우에 대한 최소 트랜잭션 크기(예로서, 윈도우0.크기 = 8 바이트, 윈도우3.크기=128B)를 할당하기 위한 능력을 제공할 수 있다. 예를 들면, 윈도우0에 대한 최소 전송 크기가 8 바이트이면, 48b 어드레스 필드에 대해, 윈도우0은 2^48 * 8 바이트 = ~2.25x1015 바이트를 저장할 수 있다. 동일한 방식으로, 윈도우3에 대한 최소 전송 크기가 128 바이트이면, 윈도우3은 ~3.6x1016 바이트를 지원할 수 있다. 이와 같이, 윈도우0 및 윈도우3 양쪽 모두가 어드레스 공간이 내포하는 것보다 상당히 더 많은 바이트를 지원한다.
트랜잭션 윈도우와 연관된 또 다른 특징은 프로토콜에서 부가적인 명령들을 생성하지 않고 윈도우0 SRAM 및 시스템 제어 레지스터들과 같은 다른 공간들의 간단한 시스템-레벨 어드레스 가능성을 포함한다. 즉, SRAM 및 시스템 제어 레지스터들은 간단히 윈도우0을 사용함으로써 어드레싱될 수 있다. 이전 프로토콜들은, 다른 한편으로, 이들 유형들의 메모리들과 상호 작용하기 위해 레지스터.판독 및 레지스터.기록과 같은 부가적인 명령들을 사용할 수 있다. 이들 메모리 유형들에 대한 지정된 트랜잭션 윈도우를 갖고, 다른 메모리 디바이스들을 위해 사용된 동일한 판독 및 기록 명령들이 또한 SRAM 및 시스템 제어 레지스터들을 위해 사용될 수 있다. 즉, 판독 및 기록 명령들은 간단히 적절한 윈도우를 나타낼 수 있다. 이와 같이, 확장 가능 프로토콜은 보다 적은 명령들을 이용할 수 있으며, 그에 의해 프로토콜에서 사용된 비트의 수를 감소시킨다.
트랜잭션 유형들에 따라 데이터 트랜잭션들을 조직함으로써, 다수의 트랜잭션 윈도우들이 동일한 메모리 유형으로의 액세스의 다수의 방안들을 제공할 수 있다. 예를 들면, 통상적인 DDR3 DRAM은 8개의 뱅크들을 포함할 수 있으며, 내부 버스는 8개의 이러한 DRAM들을 포함할 수 있다. 이를 고려하여, 8개의 DRAM들은 윈도우1이 8개의 DDR3 DRAM들의 그룹의 뱅크 0을 나타내며 윈도우2가 이러한 동일한 그룹의 뱅크 1로의 액세스를 제공하도록 조직될 수 있다. 이러한 방식으로, 각각의 윈도우는 각각의 DRAM의 특정한 가상 어드레스 공간을 특정할 수 있다. 이를 고려하여, 각각이 페이지들, 뱅크들, 및 랭크들을 갖는, 락-스텝 동작에서 그룹핑된 임의의 수의 DRAM들이 있을 수 있으므로 다수의 적절한 그룹핑 방법들이 이용 가능하다는 것이 명확하다. 동일한 방식으로, NAND들은 또한 페이지들, 평면들, 및 블록들을 갖고 그룹핑될 수 있다. 더욱이, 다채널 디바이스들은 채널 및 그것의 다양한 집합들마다 추가로 분리될 수 있다. 일반적으로, 그룹핑 옵션들은 논리 칩 설계의 복잡도에 기초하여 결정될 수 있다.
다수의 가상 어드레스 공간들 및 가상 채널들을 가진 다수의 트랜잭션 윈도우들을 지원함으로써, 확장 가능 프로토콜은 상이한 지연시간들을 갖는 메모리들을 포함하는 시스템에서 예측 가능한 데이터 순서화를 수립하기 위해 트랜잭션 윈도우들을 사용할 수 있다. 그 결과, 확장 가능 프로토콜은 고 및 저 우선순위 요청들이 어떻게 순서화되는지를 특정한 명시적 프로토콜 필드를 갖지 않고 고 및 저 우선순위 요청들을 지원할 수 있다.
앞서 말한 것을 고려하여, 도 5는 메모리 디바이스(14)의 부분인 다양한 유형들의 메모리들에 대한 트랜잭션 윈도우들을 할당하기 위한 방법(50)의 흐름도를 예시한다. 방법(50)은 특정한 순서로 묘사되지만, 방법(50)은 임의의 적절한 순서로 수행될 수 있으며, 따라서 도면에서 묘사된 순서에 제한되지 않는다는 것이 주의되어야 한다. 부가적으로, 방법(50)에 대한 다음의 설명은 논의 목적들을 위해 메모리 SoC(22)에 의해 수행되는 것으로 설명될 것이다. 이와 같이, 다양한 유형들의 메모리들에 통신적으로 결합되는 임의의 적절한 프로세서는 방법(50)에서 설명된 동작들을 수행할 수 있다.
이제 도 5를 참조하면, 블록(52)에서, 메모리 SoC(22)는 메모리 SoC(22) 자체 내에 저장된 레지스터들 또는 다른 메모리 구성요소들로부터 초기화 신호를 수신할 수 있다. 일 실시예에서, 초기화 신호는 작동 시작 시 또는 메모리 디바이스(14)가 처음에 전력을 수신할 때 메모리 SoC(22)에 의해 수신될 수 있다.
블록(54)에서, 메모리 SoC(22)는 그것이 액세스할 수 있는 메모리 유형들을 결정할 수 있다. 즉, 메모리 SoC(22)는 그것의 통신 레인들(예로서, 채널들(29))을 스캐닝하며 메모리 SoC(22)에 통신적으로 결합될 수 있는 상이한 유형들의 메모리들을 식별할 수 있다. 다시 도 2에 묘사된 예시적인 메모리 디바이스(14)를 참조하면, 메모리 SoC(22)는 RLDRAM(26), DDR4(28), 및 NAND(24) 메모리 유형들이 메모리 SoC(22)에 결합된다고 결정할 수 있다.
블록(56)에서, 메모리 SoC(22)는 블록(54)에서 식별된 메모리 유형들의 각각의 능력들을 결정할 수 있다. 메모리 유형들의 능력들은 메모리 유형의 용량, 메모리 유형을 사용한 판독 동작에 대한 예상된 지연시간, 메모리 유형을 사용한 기록 동작에 대한 예상된 지연시간 등을 포함할 수 있다. 트랜잭션 윈도우들을 할당할 때 사용하기 위한 메모리 SoC(22)에 의해 식별될 수 있는 다른 능력들은 판독 지연시간, 기록 지연시간, 대역폭, 최소 판독 트랜잭션 크기, 최소 기록 트랜잭션 크기, 디바이스 사이클 시간, 제자리에서의 기록 가능 여부, 바이트 기록 능력 여부 등을 포함할 수 있다. 특정한 실시예들에서, 메모리의 각각의 상이한 유형은 상이한 세트의 능력들과 연관될 수 있다. 상이한 유형들의 메모리들 및 상이한 세트들의 능력들 사이에서의 연관들은 메모리 SoC(22)의 레지스터에 저장될 수 있거나 또는 각각의 개별적인 메모리 유형에 의해 제공될 수 있다.
메모리 유형들의 능력들을 결정한 후, 메모리 SoC(22)는, 블록(58)에서, 각각의 메모리 유형의 각각의 능력들에 기초하여 블록(54)에서 식별된 각각의 메모리 유형에 트랜잭션 윈도우를 할당할 수 있다. 일반적으로, 메모리 SoC(22)는 동일한 트랜잭션 윈도우에 각각의 유사한 메모리 유형을 할당할 수 있다. 즉, 각각의 유사한 메모리 유형은 유사한 능력들을 가지므로, 메모리 SoC(22)는 동일한 트랜잭션 윈도우에 메모리 유형을 할당할 수 있다. 예를 들면, 다시 도 2의 예시적인 메모리 디바이스(14)를 참조하면, 메모리 SoC(22)는 그것들이 동일한 메모리 유형들이기 때문에 동일한 트랜잭션 윈도우에 두 개의 DDR4(28) 메모리들을 할당할 수 있다. 동일한 방식으로, 두 개의 상이한 메모리 유형들이 특정한 수의 유사한 능력들을 갖는다면, 메모리 SoC(22)는 또한 동일한 트랜잭션 윈도우에 두 개의 메모리 유형들을 할당할 수 있다.
일 실시예에서, 메모리 SoC(22)는 메모리 SoC(22)의 원하는 동작들에 기초하여 대응하는 트랜잭션 윈도우에 메모리 유형을 할당할 수 있다. 예를 들면, 메모리 SoC(22)가 모든 판독 동작들이 적어도 특정한 지연시간을 갖기를 원한다면, 메모리 SoC(22)는 이러한 지연시간 문턱값을 충족시키는 제1 트랜잭션 윈도우로 또는 이러한 지연시간 문턱값을 충족시키지 않는 제2 트랜잭션 윈도우로 각각의 식별된 메모리 유형을 할당할 수 있다.
각각의 식별된 메모리 유형에 트랜잭션 윈도우를 할당한 후, 메모리 SoC(22)는 저장 디바이스에 각각의 트랜잭션 윈도우의 속성들을 저장하기 위해 블록(60)으로 진행할 수 있다. 저장 디바이스는 데이터를 저장할 수 있는 임의의 적절한 디바이스를 포함할 수 있다. 이와 같이, 저장 디바이스는 로컬 레지스터, 테이블, 또는 몇몇 다른 정보 저장 유닛을 포함할 수 있다. 이러한 방식으로, 메모리 SoC(22)는 상기 설명된 바와 같이 순서화 규칙들에 따라 각각의 메모리 유형에 대한 동작들을 수행할 수 있다. 몇몇 경우들에서, 저장된 속성들은 각각의 트랜잭션 윈도우의 동작에 관한 다른 관련 정보와 함께 각각의 트랜잭션 윈도우의 특정한 능력들을 상세히 열거할 수 있다.
우회 레벨들의 프로그램 가능한 수
패킷(30)이 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 ECC 필드(36)를 갖는 것으로 상기 설명되었지만, 특정한 실시예들에서, 확장 가능 프로토콜은 판독, 기록, 이동, 판독-수정-기록 등과 같은, 요청을 조절하기 위해 패킷(30)으로 다른 선택 필드들을 포함할 수 있다. 하나의 이러한 조건은 요청에 적용할 우회 레벨들의 수를 표시하는 것을 포함할 수 있다.
우회 레벨들은 요청 및 요청되는 데이터 사이에서 포인터들의 수를 표시할 수 있다. 컴퓨팅 시스템들에서 이용 가능한 많은 양의 데이터(예로서, 빅 데이터)를 고려해볼 때, 데이터는 종종 다수의 테이블들을 통해 인덱싱되며 하나의 위치에 저장된다. 즉, 빅 데이터 시스템에서, 특정한 데이터세트에 대한 요청은 제3 포인터 등을 나타내는, 제2 포인터를 나타내는 포인터를 포함할 수 있다(예로서, 링크 리스트). 결국, 포인터 시퀀스에서 마지막 포인터는 요청된 데이터세트의 어드레스를 나타낼 수 있다. 각각의 포인터-대-포인터 링크는 우회 레벨로서 불리울 수 있다. 각각의 우회 레벨을 통해 요청된 데이터세트를 식별하는 프로세스는 종종 "포인터 추적"으로 불리운다.
요청 구성요소의 관점으로부터, 요청 구성요소는 처음에 제1 포인터를 가진 특정한 데이터세트에 대한 요청을 전송할 수 있다. 제1 포인터를 가진 요청에 응답하여, 요청 구성요소는 제2 포인터를 수신할 수 있다. 이와 같이, 요청 구성요소는 그 후 제2 포인터를 가진 특정한 데이터세트에 대한 제2 요청을 전송할 수 있다. 이러한 프로세스는 요청 구성요소가 특정한 데이터세트를 수신할 때까지 계속될 수 있다. 따라서, 요청 버스(Q) 상에서의 트래픽은 하나의 단일 초기 요청에 의해 요청된 데이터세트를 실제로 수신하기 전에 다수의 요청들을 수반할 수 있다.
다양한 우회 레벨들 유형 요청에 관하여 버스 트래픽의 양을 감소시키기 위해, 확장 가능 프로토콜은 확장 가능 프로토콜을 구현하는 애플리케이션-특정 집적 회로(ASIC), 메모리 SoC(22), 호스트 SoC(12) 등의 설계 내에서 요청 구성요소가 요청된 데이터를 실제로 수신하기 전에 수신할 수 있는 포인터들의 수의 표시를 특정할 수 있다. 이와 같이, 확장 가능 프로토콜을 구현한 메모리 시스템은 데이터의 위치 및 원래 요청 사이에서 포인터 체인을 식별할 수 있으며 요청 구성요소로부터의 초기 요청에 기초하여 요청된 데이터에 요청을 제공할 수 있다. 즉, 요청 구성요소로부터 임의의 수의 우회 레벨들을 수반한, 하나의 요청은 요청된 데이터를 포함하는 단지 하나의 응답을 수신하는 것을 야기할 수 있다.
이를 고려하여, 우회 레벨들의 수를 표시한 선택 필드는 2 비트를 포함할 수 있다. 일 실시예에서, 이진 00은 우회 레벨들이 없음을 또는 요청에서 공급된 어드레스가 의도된 피연산자의 실제 어드레스임을 표시할 수 있다. 이진 01은 1개의 우회 레벨 또는 요청 내에서의 어드레스에 의해 특정된 위치에서의 데이터가 실제로 포인터의 어드레스(예로서, 최종 어드레스)이며 의도된 피연산자 어드레스가 상기 포인터에 포함된다는 것을 표시할 수 있다. 예를 들면, 1개의 우회 레벨을 가진 판독 요청에서, 요청 구성요소에 의해 수행된 실제 기능은 먼저 요청에 포함된 어드레스의 콘텐트들을 판독하는 것을 포함할 수 있다. 이 예에서, 어드레스의 콘텐트는 어드레스2일 수 있다. 확장 가능 프로토콜을 구현한 메모리 시스템은 그 후 어드레스2의 메모리 위치에서 콘텐트들을 판독할 수 있으며, 어드레스2의 메모리 위치의 콘텐트는 판독 요청의 결과로서 공급된다.
동일한 방식으로, 이진 10은 2개의 우회 레벨들을 표시할 수 있다. 여기에서, 공급된 어드레스는 어드레스2를 나타낼 수 있으며, 이것은 포인터일 수 있다. 즉, 어드레스2는 어드레스3을 나타내는 포인터를 포함할 수 있다. 어드레스3에서 데이터 콘텐트는 그 후 판독 요청의 결과로서 요청 구성요소에 공급될 수 있다.
이진 11은 3개의 우회 레벨들을 표시할 수 있다. 이와 같이, 공급된 어드레스는 어드레스2를 나타낼 수 있고, 이것은 어드레스 3을 나타낼 수 있으며, 이것은 어드레스4를 나타낼 수 있고, 이것은 데이터 콘텐트를 포함할 수 있다. 확장 가능 프로토콜을 구현한 메모리 시스템은 판독 요청의 결과로서 데이터 콘텐트를 요청 구성요소에 제공할 수 있다.
기록 요청의 인스턴스에서, 확장 가능 프로토콜을 구현한 메모리 시스템에 의해 수행된 프로세스는 설명된 판독 예와 동일할 수 있다. 예를 들면, 이진 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)는 우회 레벨 필드(48)를 포함하지 않도록 메모리 SoC(22)에 특정할 수 있다.
송신할 패킷(30)을 준비할 때, 메모리 SoC(22)는 패킷(30)이 송신될 이유를 결정할 수 있다. 이와 같이, 메모리 SoC(22)는 어떤 소프트웨어 명령이 패킷(30)의 전송을 위해 사용되었는지를 결정할 수 있다. 패킷을 발생시키는 소프트웨어 명령은, 예를 들면, 포인터의 포인터를 찾기 위한 명령에 대응할 수 있다. 메모리 SoC(22)는 두 개의 우회 레벨들을 갖는 것으로서 이러한 명령을 해석할 수 있으며 따라서 송신을 위한 패킷(30)을 준비할 때 우회 레벨 필드(48)에서 10 이진 값을 제공할 수 있다.
우회 레벨들은 다양한 유형들의 동작들을 위해 유용할 수 있다. 예로서, 임의의 치수들의 어레이들은 불필요한 트래픽을 각각의 버스에 부가하지 않고 그것들 각각의 요청들의 콘텐트를 식별하도록 요청 구성요소들을 돕기 위해 우회 레벨들을 사용할 수 있다. 예를 들면, 3-차원 어레이는 데이터를 액세스하기 위해 3개의 포인터들을 사용할 수 있다. 몇몇 정의된 구조들의 레코드들은 포인터들을 사용할 수 있다. 이러한 레코드의 일 예는 리스트에서 모든 구조에 대한 헤드 및 테일 포인터를 갖는 링크 리스트들을 포함할 수 있다. 링킹된 리스트들에 대해, 우회 레벨들의 추상화는 링크 리스트의 파싱이 보다 효율적으로 발생할 수 있게 할 것이다. 즉, 시작할 어드레스 및 요청된 데이터가 리스트의 제8 요소이거나 또는 8개의 우회 레벨들을 수반하는 목적지에 위치됨을 알게 됨으로써, 메모리 시스템은 요청 구성요소에 의해 제공된 단일 요청을 사용하여 요청된 데이터 또는 리스트의 제8 요소를 검색할 수 있다. 여기에서, 메모리 시스템은 요청된 데이터의 위치를 결정하기 위해 8개의 우회 레벨들의 각각을 파싱할 수 있다. 요청된 데이터의 위치를 식별할 때, 메모리 시스템은 요청된 데이터를 요청 구성요소에 제공할 수 있으며, 따라서 버스 트래픽을 요청 구성요소로부터의 하나의 요청에 및 요청된 데이터의 위치로부터의 하나의 응답에 제한한다.
수신된 패킷들을 확인 응답하지 않는 것
버스 트래픽을 감소시키기 위한 또 다른 기술은 수신된 패킷들을 확인 응답하지 않는 것을 포함할 수 있다. 즉, 종래의 프로토콜들에서, 수신인 구성요소에 의해 수신된 각각의 패킷은 확인 응답 패킷을 송신 구성요소로 되돌려 보낼 수 있다. 송신된 패킷들의 대다수가 대응하는 수신인 구성요소에 의해 수신되므로, 확인 응답 패킷들을 전송하는 것은 많은 이득을 제공하지 않고 각각의 버스 상에서의 트래픽을 늘릴 수 있다.
예를 들면, 확인 응답 비트가 모든 성공적인 패킷을 수신하는 것에 응답하여 전송된다면, 및 송신들이 초고속 인터페이스들에서 일반적인 1e-12의 비트 오류 레이트(BER)를 갖는다는 것을 고려하면, 다수의 불필요한 비트가 각각의 패킷이 수신되었음을 표시하기 위해 송신된다. 이를 고려하여, 및 평균 패킷이 100 비트를 포함하며 평균 패킷 오류 레이트가 대략 1e-10임을 가정할 때, 수신인 구성요소는 1x1010 패킷들에 대한 성공을 표시한 확인 응답 비트 및 오류를 표시한 1 패킷을 송신할 수 있다. 사실상, 수신인 구성요소는 하나의 오류를 표시하기 위해 약 1x1010 비트를 전송하였을 것이다.
버스 내에서 흐르는 비트의 양을 감소시키기 위해, 수신인 구성요소는 모든 수신된 패킷에 대한 확인 응답 패킷을 전송하지 않을 수 있다. 대신에, 송신 구성요소는 전송된 패킷이 수신인 구성요소에 의해 달리 통지되지 않는다면 수신되었다고 가정할 수 있다. 각각의 수신된 패킷에 대한 확인 응답 패킷들을 전송하지 않는 예들은 도 6 및 도 7에 예시된다. 도 6을 참조하면, 요청 버스(Q)는 2 킬로바이트의 판독 요청을 전송할 수 있다. 판독 요청을 수신할 때, 요청 버스(S)는 2KB 메시지가 판독할 준비가 됨을 표시하는 패킷을 송신할 수 있다. 요청 버스(Q)는 그 후 판독 요청을 재송신할 수 있으며, 이것은 응답 버스(S)가 상이한 패킷들에서 요청된 데이터를 전송하게 할 수 있다. 도 6에 도시된 바와 같이, 데이터의 각각의 패킷을 수신할 때, 요청 버스(Q)는 패킷이 성공적으로 수신됨을 표시하는 확인 응답 패킷을 전송하지 않는다. 여기에서, 요청 버스(Q)는 고 지연시간 판독 동작들을 갖고 동작할 수 있으므로, 응답 버스(S)는 동작들에 대해 두 개의 스테이지들을 포함할 수 있다. 즉, 응답 버스(S)는 메시지가 준비됨을 표시할 수 있으며 그 후 응답 버스(S)는 판독 요청에 관련된 대응 데이터를 전송할 수 있다.
동일한 방식으로, 고 지연시간 직접 메모리 액세스 서브시스템들은 다양한 기록 동작들에 대한 하나의 스테이지 응답을 이용할 수 있다. 예를 들면, 도 7은 판독-수정-기록 요청이 요청 버스(Q) 상에서 송신되며 판독-수정-기록 요청이 완료되었다는 메시지로 응답하는 예를 예시한다.
앞서 말한 것을 고려하여, 수신인 구성요소는 오류들을 가진 패킷들을 여전히 수신할 수 있다. 이와 같이, 수신인 구성요소는 NOT_ACKNOWLEDGE 패킷을 송신 구성요소에 전송함으로써, 패킷이 수신되지 않았거나 또는 수신된 패킷이 오류를 포함한다는 것을 송신 구성요소에 통지할 수 있다. 전송된 패킷이 수신되지 않았음을 표시하는 것 외에, NOT_ACKNOWLEDGE 패킷은 가장 최근에 양호한 것으로 알려진 버스 트랜잭션을 표시할 수 있다. 이와 같이, 오류가 ECC 서브시스템을 통해 검출될 때, 오류를 가진 패킷은 재-송신되어야 한다. 수신인 구성요소는 재송신이 발생할 수 있도록 하는 기준으로서 가장 최근의 성공적인 버스 트랜잭션의 송신 구성요소를 식별할 수 있다.
특정한 실시예들에서, 확장 가능 프로토콜은 가장 최근의 양호한 것으로 알려진 버스 트랜잭션의 아이덴티티를 송신 구성요소에 표시하기 위해 4개의 관련 필드들을 사용할 수 있다. 관련 필드들은 윈도우, 어드레스, 트랜잭션, 및 선택적 데이터 시퀀스 번호를 포함한다. 이들 4개의 필드들은 시스템에서 임의의 요청/응답을 식별할 수 있다. 특정한 실시예들에서, 부가적인 ECC 필드는 송신에서 오류를 검출하기 위해 사용될 수 있다(예로서, 이하에서 보다 상세히 설명될 바와 같이, 또한 HD6 코드로서 알려진, 송신 패킷에서 1, 2, 3, 4, 또는 5개의 랜덤 오류들의 존재를 검출하기 위해 보장되는 코드).
오류를 검출할 때, 수신인 구성요소는 NOT_ACKNOWLEDGE 메시지를 송신 구성요소에 전송할 수 있다. 이 패킷의 크기는 많은 가능한 필드 크기들일 수 있다. 예를 들면, NOT_ACKNOWLEDGE 메시지는 67 비트의 합계에 대해 4-비트 트랜잭션 유형, 3-비트 윈도우, 48-비트 어드레스, 7-비트 데이터 시퀀스 번호, 및 5-비트 원래 트랜잭션 유형일 수 있다. 그 후 15-비트 ECC 필드가 부가될 수 있으며, 그에 의해 합계를 82 비트로 이끈다. 다시 상기 예를 참조하면, 82 비트는 1x1010패킷들에서 하나의 오류를 표시하기 위해 전송된 1x1010 비트보다 상당히 더 낮으며, 따라서 어드레스 오류 패킷들을 표시하기 위한 보다 효율적인 방식이다. 상기 언급된 데이터 시퀀스 번호는 잘못된 패킷을 식별할 수 있다는 것이 주의되어야 한다. 데이터 시퀀스 번호 및 그것이 어떻게 생성될 수 있는지에 관한 부가적인 상세들이 도 12 내지 도 14를 참조하여 이하에서 논의될 것이다.
시스템에서 오류를 검출할 때, 송신기 구성요소는 데이터를 재송신해야 한다. 그러나, 오류를 검출할 때 몇몇 지연시간이 있으므로, 송신 구성요소는 수신인 구성요소가 오류가 수신된 패킷에 존재하였다고 결정하기 전에 이미 송신된 다른 패킷들을 가질 수 있다. 확장 가능 프로토콜이 상기 설명된 데이터 패킹 기술들을 사용하여 전송된 가변 패킷 크기들을 포함하므로, 이전 송신 오류는 수신인 구성요소가 잘못된 패킷 길이를 갖게 할 수 있으며, 그러므로 오류를 포함한 패킷 후 모든 데이터 패킷을 잘못 해석할 수 있다. 이와 같이, 수신 구성요소는 수신 구성요소에 대한 가장 최근의 양호한 것으로 알려진 버스 트랜잭션의 아이덴티티를 송신 구성요소에 표시할 수 있다. 송신 구성요소 및 수신 구성요소는 그 후 오류가 있는 패킷이 수신된 포인트로 리턴하며 임의의 동작이 그것을 따르는 잠재적으로 잘못된 패킷 및 패킷들 상에서 발생하는 것을 방지할 수 있다.
가장 최근의 알려진 양호한 버스 트랜잭션을 참조하는 이러한 규칙으로 인해, 수신인 구성요소는 재송신이 발생할 수 있는 정확한 포인트를 송신 구성요소에 정확하게 표시할 수 있다. 그러나, 수신인 구성요소는 양호한 트랜잭션이 없을 때(예로서, 파워-온 또는 리셋이 성공적이지 않은 이래 제1 트랜잭션) 상기 규칙에 대한 하나의 예외를 통합할 수 있다. 이 경우에, 수신인 구성요소는 0들로 모든 필드들을 채울 수 있으며, 따라서 시스템의 모든 요소들은 "제1 트랜잭션"으로서 0들의 필드를 해석할 것이다.
상기 언급된 바와 같이, 확장 가능 프로토콜은 선택적 데이터 시퀀스 번호 필드를 포함할 수 있다. 이 필드는 프로토콜에 의해 지원된 최대 응답 패킷보다 크도록 요구되는 트랜잭션들을 지원할 수 있다. 예를 들면, 128 바이트인 것으로 윈도우에서의 최소 트랜잭션 및 트랜잭션의 크기를 서술하는 크기로 불리우는 또 다른 필드를 고려하면, 총 트랜잭션 크기는 2^크기 * windowMinTransactionSize으로서 결정될 수 있다. 크기가 3-비트 필드이면, 최대 트랜잭션은 2^7 * 128 = 16,384 바이트일 수 있다. 임의의 버스가 하나의 요청에 의해 너무 길게 결부되는 것을 방지하기 위해, 프로토콜에 의해 지원된 최대 단일 패킷은 128B의 데이터일 수 있다. 그러므로, 16,384 바이트 트랜잭션은 각각 128B의 128 데이터 패킷들에 의해 만족될 수 있다. 일 실시예에서, 선택적 데이터 시퀀스 번호 필드는 이들 128개 데이터 패킷들 중 임의의 것을 참조하는 7 비트를 포함할 수 있다. 이러한 방식으로, NOT_ACKNOWLEDGE 메시지가 발행된다면, NOT_ACKNOWLEDGE 메시지는 송신이 성공적이지 않게 된 정확한 포인트를 정확하게 식별할 수 있다. 또 다른 실시예에서, 트랜잭션크기 0 내지 트랜잭션크기 15에 대해, 8B의 최소 트랜잭션크기는 단 상에 비트를 보존하기 위한 2N 바이트와 대조적으로, 8 바이트, 16 바이트, 32 바이트, 48 바이트, 64 바이트, 80 바이트, 96 바이트, 112 바이트, 및 128 바이트일 수 있다.
데이터 패킹
앞서 말한 것으로 고려하여, 유연한 통신 버스들을 제공하기 위해, 확장 가능 프로토콜은 임의의 유형의 버스 통신을 사용하여 패킷들을 송신할 때 데이터 패킹 기술들을 이용할 수 있다. 일반적으로, 패킷 크기들이 전송되는 요청 또는 응답의 유형, 전송되는 데이터, 요청되는 동작들 등에 기초하여 결정되므로, 패킷에 관한 보다 많은 상세들을 알기 전에 어떤 유형의 데이터 채널들을 사용할지를 예상하는 것은 어려울 수 있다. 이와 같이, 확장 가능 프로토콜은 종래의 프로토콜들을 갖고 행해진 바와 같이, 0들을 갖고 각각의 개개의 패킷을 패딩하지 않고 함께 송신되는 데이터 패킷들을 패킹함으로써 이용 가능한 채널들의 사용을 최대화하도록 설계될 수 있다. 여기에서 사용된 바와 같이, 용어("패딩 없이")는 데이터 패킷들의 송신 사이에서, 0들(즉, 0의 값을 갖는 비트)이 각각의 채널에 걸쳐 송신되지 않음을 의미한다. 대신에, 송신될 준비가 된 다음 스케줄링된 패킷이 이전 패킷이 송신된 직후 클록 사이클 상에서 송신될 것이다.
예를 들면, 10개의 신호 레인들을 포함하는 요청 버스(Q) 및 8개의 신호 레인들을 포함하는 응답 버스(S)를 고려하자. 본 예는 데이터 인코딩이 없으며 트랜잭션들이 단지 간단한 비트 송신들(즉, 심볼 송신들이 없음)을 포함한다고 가정한다. Q 버스 상에서의 점유의 크기들이: 4.3, 7.3, 9.7, 13.5, 14.3, 14.9, 20.0, 20.1, 21.6, 33.0, 36.2, 58.8, 65.2, 105.4, 110.5, 및 123.0이면, 종래의 프로토콜은 그것들과 연관된 부분 구성요소들을 가진 값들을 패딩할 수 있다. 즉, 종래의 프로토콜은 Q 버스 상에서의 점유의 크기들이 각각 5, 8, 10, 14, 15, 15, 20, 21, 22, 33, 37, 59, 66, 106, 111, 및 123이 되도록 각각의 부분 값의 남아있는 부분에 0들을 부가할 수 있다. 몇몇 경우들에서, 9개만큼 많은 0들이 송신에 부가될 수 있으며, 이것은 송신된 0들이 실제로 송신되는 데이터를 나타내지 않기 때문에 전체 버스 이용 효율에 악 영향을 줄 수 있다. 이러한 방식으로, 이들 0들은 정보를 운반하지 않고 버스를 이용하며, 그에 의해 버스 이용 효율을 감소시킨다.
일 실시예에서, 송신되는 데이터를 패딩하는 대신에, 확장 가능 프로토콜은 요청들이 함께 패킹되도록 허용할 수 있다. 버스 신호는 따라서 패딩된 0들 없이 남겨진다. 예를 들면, 도 8은 확장 가능 프로토콜이 두 개의 18-비트 요청들을 함께 패킹하는 레인 패킹 예(61)를 예시한다. 도 8을 참조하면, 확장 가능 프로토콜은 송신들을 비트 대신에 심볼들로서 간주할 수 있다. 도 8의 예에서, 1 비트는 하나의 심볼을 나타낼 수 있다. 도 8에서 버스(62)는 12개의 레인들을 포함(즉, 하나의 플릿에서 12 비트를 송신할 수 있다)하므로, 확장 가능 프로토콜은 요청들을 함께 패킹함으로써 두 개의 18-비트 요청들을 송신할 수 있다. 즉, 제2 18-비트 요청(66)은 제1 18-비트 요청(64) 직후 송신될 수 있다. 이와 같이, 송신 버스는 어떤 낭비 비트(예로서, 패딩된 0들)도 포함하지 않는다.
특정한 실시예들에서, 수신 구성요소가 패킹된 레인에서 새로운 패킷의 시작을 식별할 수 있음을 보장하기 위해, 송신 구성요소는, 상기 언급된 바와 같이, 시작 비트 필드(46)에서 특정될 수 있는, 시작 비트를 갖고 각각의 새로운 패킷(30)을 시작할 수 있다. 이와 같이, 수신 구성요소가 비트의 스트림으로서 패킹된 데이터 패킷들을 수신할 때, 그것은 시작 비트가 검출되는 때에 기초하여 각각의 패킷의 시작을 식별할 수 있다. 이를 고려하여, 송신되는 각각의 패킷은 새로운 패킷의 존재를 표시하기 위해 시작 비트(예로서, 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 값을 나타내는 비트 값들을 결정한 후, 메모리 SoC(22)는, 블록(82)에서, 블록들(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 패킷(92)이 송신된 직후, 제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)는 제3 패킷(96)이 비트 시간(9)에 송신할 준비가 될 때까지 비트 시간(8)에 비트 레인들(6 내지 15) 상에서 0들을 송신할 수 있다. 수신 구성요소가 데이터로서 버스에 패딩된 0들을 잘못 해석하지 않을 수 있음을 보장하기 위해, 수신 구성요소는 메모리 SoC(22)로부터 비트를 계속해서 수신하며 유효 패킷이 다음 패킷의 하나의 또는 시작 비트를 수신한 후 송신된다고 결정할 수 있다.
특정한 실시예들에서, 또 다른 패킷이 송신할 준비가 되어있지 않다면, 메모리 SoC(22)는 다음 패킷이 송신할 준비가 될 때까지 버스(62)를 정지시킬 수 있다. 이 경우에, 메모리 SoC(22)는 버스(62)가 패킷들을 송신하기 위해 이용되지 않을 때 버스(62)에 동력을 공급하기 위해 사용된 에너지를 보존할 수 있다.
레인-패킹 기법을 사용하여 패킷들을 송신할 때 효율을 예시하기 위해, 다음의 예가 제공된다. 10-레인 버스 상에서의 송신 시퀀스는 다음의 버스 활동을 포함할 수 있다: 73 비트, 그 후 652 비트, 그 후 73 비트, 그 후 652 비트. 이러한 4개의 요청들의 그룹은 총 1450 비트를 포함하며, 이것은 낭비 비트 없이 버스 상에서 정확하게 145개의 신호 간격들(공식적으로 유닛 간격들 또는 UI로 불리우는)을 포함한다. UI는 특정한 수의 비트를 포함한 데이터의 하나의 클록킹된 그룹을 나타낼 수 있다. 예를 들면, 8-비트 버스 또는 8-레인 링크 상에서, 8-레인 링크를 통해 송신된 데이터의 1 플릿은 하나의 플릿에 대응할 수 있다. 하나의 플릿은 그 후 8 비트의 데이터를 포함한 하나의 UI로서 불리울 수 있다. 이와 같이, UI는 버스가 이용되는 효율을 평가하기 위해 사용될 수 있다. 즉, 패킷의 UI 점유는 8b의 버스 폭으로 패킷 비트 카운트들(시작비트, 트랜잭션 유형 필드(32), 페이로드 필드(34), 및 ECC 필드(36)를 포함한)을 나눔으로써 산출된다. 이와 같이, 8-레인 링크가 6 비트의 데이터를 전송하기 위해 사용된다면, UI는 0.75(6/8)이다.
앞서 말한 것을 고려하면, 이하에 제공된 예는 다음의 조건들이 존재한다고 가정한다: ECC 해밍 거리(3), 트랜잭션 유형 필드(32)는 요청 버스(Q) 및 응답 버스(S) 양쪽 모두에 대해 5 비트를 포함하고, 데이터시퀀스번호(dataSequenceNumber)는 7 비트이고, 8-비트 유닛 크기, 4-비트 트랜잭션크기, 3-비트 윈도우, 48-비트 어드레스, 2-비트우회레벨들(levelsOfIndirection), 24-비트 RMW연산부호(RMWopcode)+데이터, 4-비트 메시지유형.  이들 사이징 가정들을 갖고, 응답 버스(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이며, 그러므로 비트 절감들은 레인들의 수가 증가됨에 따라 커진다. 이 예는, 그것들이 두 개의 버스들 상에서 동일한 또는 동일하지 않은 폭들인지에 관계없이, 요청 버스(Q) 또는 응답 버스(S)의 임의의 폭을 나타낸다. 확장 가능 프로토콜이 상기 설명된 바와 같이 레인들을 패킹할 수 있게 하기 위해, 호스트 SoC(12) 또는 다른 수신기는 다음의 송신/수신 기법을 사용할 수 있다: 패킷(30)을 수신하고, 패킷(30) 내에서 트랜잭션 유형, 페이로드의 크기, 및 ECC 필드(36)의 위치를 식별하기 위해 패킷(30)의 콘텐트들을 파싱하고, ECC에 기초하여 패킷(30)의 정확도를 검증하며, 그 후 확신을 갖고 송신에 따라 동작한다.
이러한 방식으로, 수신된 송신 패킷은 그것의 콘텐트들이 파싱되기 전에 수신기 버퍼(예로서, 버퍼(23))로 전체적으로 캡처될 수 있다. 게다가, 수신기는 패킷이 오류가 없는 것으로 검증되지 않는 한 수신된 패킷을 사용하지 않을 수 있다. 버퍼(23)는 송신 오류가 검출되는 경우에 선택적 플러싱을 위한 부가된 능력을 갖고 선입선출(first-in-first-out; FIFO)로서 동작될 수 있다. 확장 가능 프로토콜은 버퍼(23)에서 데이터를 빼내기 위한 및 패킷 비트 시프팅을 위한 가변 비트 길이 능력을 포함할 수 있다. 도 3을 참조하여 상기 논의된 바와 같이, 패킷(30)의 시작은 트랜잭션 유형 필드(32)를 포함할 수 있으며, 이것은 트랜잭션 유형 필드(32)에서 표시된 트랜잭션 유형에 기초하여 패킷 크기를 특정할 수 있다. 이와 같이, 트랜잭션 유형 필드(32)는 패킷(30) 내에서 ECC 필드(36)의 상대적 위치 및 크기를 포함한 패킷 크기를 결정하기 위해 확장 가능 프로토콜이 사용할 수 있는 정보를 포함한다. ECC가 검사된 후, 확장 가능 프로토콜을 이용한 수신기는 패킷(30)이 오류가 없는지를 결정할 수 있다. 패킷이 오류가 없는 것으로 간주되면, 수신기는 트랜잭션 유형이 적절하게 디코딩되었으며 패킷 크기가 정확하게 해석되었음을 알 수 있다. 수신기는 그 후 최근에 파싱된 패킷 직후 수신된 다음 패킷으로 앞으로 나아갈 수 있다. 이러한 확장 가능 프로토콜은 크기들, 길이들, 인코딩/디코딩 방법들 등에 관계없이, 전이중인지 또는 반이중인지에 상관없이, 임의의 버스 변화들을 갖고 사용될 수 있다. 수신 구성요소가 레인 패킹 기법에 따라 패킹된 패킷들을 수신한 후 발생하는 프로세스의 부가적인 상세들은 이하에서 도 11을 참조하여 논의될 것이다.
참조를 위해, 확장 가능 프로토콜은 길이가 달라지는 송신들을 포함할 수 있다. 즉, 요청 버스(Q) 상에서, 확장 가능 프로토콜은 16개의 상이한 길이들을 사용할 수 있다. 예를 들면, 요청 버스는 모두가 8 등의 증분들인 것과 같은, 임의의 특정한 최적화된 길이를 생성하기 위해 패딩 없이 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들을 갖고 패킷을 패딩하지 않고 이전 패킷 직후 송신된다. 그러나, 제1 패킷이 종료되며 제2 패킷이 시작되는 곳을 결정하기 위해 수신기(예로서, 호스트 SoC(12))에 대해, 수신기는 수신된 패킷들을 파싱하기 위해 여기에서 설명된 특정한 기술들을 구현할 수 있다. 특정한 실시예들에서, 확장 가능 프로토콜은 수신된 패킷들 상에서 이용하기 위한 수신기에 대한 파싱 방법을 특정할 수 있다. 이러한 파싱 방법은 시스템 구현에서 이용된 논리 동작들의 헤드에서 파이프라이닝 동작들로서 시프트 동작들, 오류 검출, 및 버퍼 관리를 포함할 수 있다.
앞서 말한 것을 고려하여, 유입 방향들로 8 비트 단방향 및 유출 방향들로 8 비트의 물리 버스의 예인, 전이중은 파싱 방법의 특정한 양상들을 명확하게 하기 위해 이하에서 설명된다. 이 예에서, 하나의 플릿은 버스 상에 존재하는 데이터의 하나의 유닛 간격인 것으로 고려된다. 즉, 하나의 플릿은 버스를 통해 전달되는 8 비트의 데이터를 포함할 수 있다. 게다가, 어드레스(36b), 윈도우(3b), 및 59 비트의 해밍 밀도(HD6) 오류 커버리지를 가진 최소 패킷은 5-비트 트랜잭션 유형, 41-비트 데이터 페이로드, 및 13-비트 ECC를 포함할 수 있다. 유사하게 사이징된 작은 패킷들의 무한한 스트림이 함께 패킹되어, 어떤 비트 갭들도 남기지 않는다고 가정하면, 송신은 레인(0)에서 시작하여 송신되는 제1 패킷에 대한 레인(7)으로 가는, 다음의 시퀀스를 반영할 수 있다. (name.0은 상기 필드의 비트 0을 의미한다)
Figure 112016126833385-pct00001
제2 패킷은 그 후 다음과 같이, 플릿 8, 레인 3으로 시작하여 설정될 수 있다:
Figure 112016126833385-pct00002
제3 패킷은 그 후 다음과 같이, 플릿 16, 레인 6에서 시작할 수 있다:
Figure 112016126833385-pct00003
상기 예시된 3개의 예시적인 패킷들을 고려하여, 인입 비트는 수신기에 의해 수신된다면 수신 FIFO로 위치될 수 있다. 상기 예에서 8개의 레인들이 있으므로, 비트는 한 번에 8개 이동될 수 있다. 그러나, 인입 버스가 매우 빠를 수 있으므로(예로서, 너무 빨라서 FIFO를 사이클링할 수 없는), FIFO는 또한 상당히 더 넓도록 만들어질 수 있으며 데이터는 폭의 마지막 유닛에 도달할 때까지 계속하여 FIFO의 각각의 연속적인 8b 폭으로 전송될 수 있다. 그 때, FIFO 어드레스는 보통의 FIFO 동작들에 따라 증분되며 플릿은 폭의 마지막 유닛이 다시 수신될 때까지 FIFO 레인들(0 내지 7, 그 후 8 내지 15 등)에서 다시 시작한다. 이것은 보다 느린 로직이 매우 빠른 직렬화기/병렬화기(SERDES) 구성요소들(예로서, 40Gb/초 SERDES는 25ps의 유닛 간격을 가진다) 을 계속 유지하도록 허용한다. 2GHz의 논리 클록이 사용된다면, FIFO는 20 x 8-비트 레인 폭 또는 160 비트 폭일 수 있다. 이와 같이, ECC 로직은 자연스럽게 각각의 블록에 대해 XOR 게이트들을 사용하여 160-비트 블록들에서 형성될 수 있다(예로서, 블록(0)은 비트(0 내지 159)을 프로세싱하고, 블록(1)은 비트(160 내지 319) 등을 프로세싱하며, 따라서 ECC 블록들의 총 수는 14일 수 있으며, 여기에서 각각의 ECC 블록은 2-입력 XOR 게이트들의 상이한 상호 연결을 포함할 수 있다).
상기 설명된 3개의 패킷들의 각각이 연속하여 송신되므로, 및 수신기로의 비트의 도착이 임의의 프레이밍 정보를 포함하지 않으므로, 패킷이 적절히 프레이밍될 수 있도록 패킷의 길이를 먼저 결정하는 것이 수신 회로(예로서, 호스트 SoC(12))의 몫이다. 다시 상기 예를 참조하면, 수신기는 먼저 FIFO로부터 바로 이용 가능한 160-비트 값을 수신할 수 있다. 상기 설명된 특정한 예에서, 전체 제1 패킷은 상기 160-비트 구역 내에 있다.
상기 언급된 바와 같이, 패킷(30)의 제1 부분은 패킷(30)의 시작을 표시한 시작 비트 필드(46)를 포함할 수 있다. 패킷(30)의 다음 부분은 트랜잭션 유형 필드(32)를 포함할 수 있으며, 이것은 0 내지 31의 값을 포함할 수 있다. 트랜잭션 유형 필드(32)의 값은 데이터 페이로드의 크기 및 ECC의 크기(비트로)를 표시하는 테이블을 인덱싱하기 위해 사용될 수 있다. 특정한 실시예들에서, 수신기는 동일한 목적을 위해 간단한 논리 함수를 사용할 수 있다. 수신된 비트의 모두가 오류가 없다는 것이 즉시 알려지지 않지만, 수신기는 처음에 그것들이 트랜잭션 유형 필드(32)에서 특정된 트랜잭션 유형을 사용하기 위한 것이라고 가정할 수 있다. 수신기는 그 후, 파이프라인 스테이지에서, 수신된 패킷이 오류가 없는지를 결정하기 위해 ECC를 검사할 수 있다. 일 실시예에서, ECC를 검사하기 위해, 트랜잭션 유형 필드(32)의 트랜잭션 유형 및 페이로드 필드(34)의 데이터 페이로드는 ECC 블록(들)에서 조사될 수 있으며, 따라서 인입 ECC 비트가 모든 ECC 블록들에 제공된다. 일 실시예에서, ECC 블록은 예를 들면, 해밍 거리 알고리즘을 이용하는 확장 가능한 오류 제어 코드 알고리즘을 사용하여 ECC를 검사할 수 있다. 예를 들면, ECC 블록은 6의 해밍 거리(HD6)를 가진 오류 제어 코드 알고리즘을 이용할 수 있다. 이와 같이, ECC 블록은 59 비트(5b 트랜잭션유형, 41b 데이터 페이로드, 13b ECC)의 오류 커버리지를 제공할 수 있다. 즉, ECC 블록은 59개의 정확한 것으로 알려진 비트를 제공할 수 있다. 해밍 거리를 사용한 확장 가능한 오류 제어 알고리즘 및 알고리즘들에 관한 부가적인 상세들은 이하에서 보다 상세히 설명될 것이다.
수신기가 패킷이 오류가 없음을 검증한 후, 수신기는 그 후 트랜잭션 유형 값이 정확하다는 확실성을 갖고 알려질 수 있으며 그러므로 수신기는 수신된 패킷의 적절한 프레이밍을 가질 수 있다. 59개의 정확한 것으로 알려진 비트는 그 후 추가 패킷 프로세싱(즉, 정확한 요청이 이루어진다고 결정하며 요청을 프로세싱한다)을 위해 다음 파이프라인 스테이지로 포워딩될 수 있다. 59-비트 제1 패킷이 정확하다고 결정한 후 및 추가 프로세싱을 위해 59-비트 제1 패킷을 포워딩한 후, 수신기는 그 후 비트 0에 동조하며 상기 프로세스를 반복하기 위해 160-비트 폭 FIFO의 나머지 101 비트를 배럴-시프트할 수 있다.
몇몇 상황들에서, 수신기는 파싱하기에 이용 가능한 너무 작은 데이터를 가질 수 있다(즉, 트랜잭션 유형 필드(32), 페이로드 필드(34)를 지나, ECC 필드(36)로부터의 모든 것이 이용 가능해야 한다). 여기에서, 수신기는 그것이 모두 이용 가능할 때까지 정보를 계속해서 인출할 수 있다. 큰 패킷들은 단일 160-비트 섹션을 초과할 수 있지만, 수신기는 ECC가 트랜잭션 유형으로부터 어디에서 시작하고 종료하는지를 알고 있으므로, 수신기는 ECC 비트를 적절한 ECC 논리 블록들로 포워딩할 수 있다. 게다가, 트랜잭션 유형이 패킷의 헤드에 있으므로, 수신기는 그것을 찾는 것을 쉽게 알고 있다. 뿐만 아니라, 수신기는 페이로드 필드(34)가 트랜잭션 유형 필드(32) 및 ECC 필드(36) 사이에 모든 것을 포함한다고 결정할 수 있다. 페이로드 필드(34)를 식별할 때, 수신기는 데이터 페이로드를 적절한 ECC 논리 블록들로 전송할 수 있다. 특정한 실시예들에서, 물리적 MOVE 대신에, ECC 로직은 물리적 레이아웃 최적화 사용들에 의존하여, 데이터를 임시로 저장하는 레지스터 비트에서 원 위치에 구현될 수 있다.
상기 설명된 기술의 이점은 오류 메시지의 빠른 생성을 지원하는 것을 포함한다. 이와 같이, ECC가 오류를 검출하면, 로직 신호는 유출 큐 관리기로 전달되며 오류 메시지가 만들어지고 적절한 채널 상에서 송신된다.
앞서 말한 것을 고려하여, 도 11은 상기 언급된 레인-패킹 기법에 따라 패킷들을 수신하는 수신 구성요소(예로서, 호스트 SoC(12))에 의해 이용될 수 있는 방법(100)의 흐름도를 예시한다. 방법(100)의 다음의 설명은 호스트 SoC(12)에 의해 수행되는 것으로 설명되지만, 방법(100)은 여기에서 설명된 실시예들에 따라 레인 패킹된 패킷들을 수신하는 임의의 적절한 수신 구성요소에 의해 수행될 수 있다는 것이 주의되어야 한다.
이제 도 11을 참조하면, 블록(102)에서, 호스트 SoC(12)는 버스(62), 채널들(16) 등을 통해 비트의 스트림을 수신할 수 있다. 도 10에서 묘사된 바와 같이, 호스트 SoC(12)는 버스(62) 상에서 이용 가능한 비트 레인들의 수에 기초하여 한 번에 다수의 비트를 수신할 수 있다.
비트의 스트림을 수신할 때, 블록(104)에서, 호스트 SoC(12)는 새로운 패킷의 시작 비트를 식별할 수 있다. 이와 같이, 호스트 SoC(12)는 그것이 1을 수신할 때까지 비트의 스트림을 모니터링할 수 있다. 예를 들면, 비트 시간(0)에서, 호스트 SoC(12)는 시작 비트를 검출하며 제1 패킷(92)을 파싱하는 것을 시작할 수 있다.
블록(106)에서, 호스트 SoC(12)는 시작 비트를 따르는 5개의 비트에 기초하여 제1 패킷(92)의 트랜잭션 유형을 결정할 수 있다. 상기 논의된 바와 같이, 호스트 SoC(12)는 트랜잭션 유형 필드(32)에서 수신된 이진 값에 기초하여 제1 패킷(92)과 연관된 트랜잭션 유형을 결정하기 위해 룩-업 테이블을 사용하거나 또는 국소적 저장 구성요소에 저장된 키를 찾아볼 수 있다.
각각의 패킷에 대한 대응하는 트랜잭션 유형을 결정한 후, 블록(108)에서, 호스트 SoC(12)는 각각의 패킷의 페이로드 필드(34) 및 ECC 필드(36)를 식별할 수 있다. 즉, 각각의 패킷의 트랜잭션 유형은 페이로드 필드(34) 및 ECC 필드(36)에서 예상할 비트의 수를 호스트 SoC(12)에 표시할 수 있다. 이와 같이, 호스트 SoC(12)는 트랜잭션 유형 필드(32) 후 제1 수의 비트를 페이로드 필드(34)인 것으로 및 페이로드 필드(34) 후 제2 수의 비트를 ECC 필드(36)인 것으로 지정할 수 있다.
패킷에 대한 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)으로 진행하며 각각의 패킷을 송신한 구성요소로 NOT_ACKNOWLEDGE 패킷을 되돌려 보낼 수 있다. 상기 논의된 바와 같이, NOT_ACKNOWLEDGE 패킷은 가장 최근의 양호한 것으로 알려진 버스 트랜잭션을 표시할 수 있다. 이와 같이, NOT_ACKNOWLEDGE 패킷은 마지막 성공적으로 수신된 패킷의 어드레스 및 트랜잭션 유형을 표시할 수 있다. 송신 구성요소는 각각의 패킷이 송신된 순서를 알고 있으므로, 송신 패킷은 그 후 NOT_ACKNOWLEDGE 패킷에서 참조된 패킷을 바로 따르는 패킷을 재전송할 수 있다.
송신기 구성요소가 NOT_ACKNOWLEDGE 패킷을 수신할 때 특정한 수의 패킷들을 재전송할 수 있음을 보장하기 위해, 특정한 실시예들에서, 송신 구성요소는 각각의 패킷이 송신된 후 특정한 양의 시간이 경과할 때까지 그것의 버퍼로부터 전송된 패킷들에 대해 무시하고, 삭제하고, 소거하거나, 또는 기록하지 않을 수 있다. 다시 말해서, 패킷이 송신된 후, 송신 구성요소(예로서, 메모리 SoC(22))는 그것이 그것의 버퍼 구성요소로부터 송신된 패킷을 삭제하기 전에 특정한 양의 시간을 기다릴 수 있다.
송신 구성요소가 그것의 버퍼로부터 그것을 삭제하기 전에 각각의 패킷을 송신한 후 기다릴 수 있는 시간의 양은 패킷에서 패킷으로 달라질 수 있다. 각각의 패킷은 상이한 수의 비트를 포함할 수 있으므로, 패킷을 송신하며 이에 응답하여 NOT_ACKNOWLEDGE 패킷을 수신하기 위해 수반된 시간의 양은 각각의 패킷에 대해 상이할 수 있다. 일반적으로, 송신 구성요소가 기다릴 수 있는 시간의 양은 버스(62)에 걸쳐 송신될 패킷에 대한 최악 래그 시간, 패킷 상에서 오류를 검출하기 위한 수신 구성요소에 대한 최악 래그 시간, 및 NOT_ACKNOWLEDGE 패킷을 수신하기 위한 송신 구성요소에 대한 최악 래그 시간에 의존할 수 있다. 상기 언급된 각각의 상황에 대한 최악 래그 시간은 수행될 동작에 대한 예상 시간에 기초하여 및 예상 시간 산출 시 오류의 마진을 제공하기 위해 예상 시간에 예상 시간의 몇몇 퍼센티지를 부가함으로써 결정될 수 있다.
수행될 상기 설명된 다양한 동작들에 대한 예상 시간을 결정할 때 수반된 인자들의 몇몇은 송신되는 패킷의 크기, 요청 버스(Q) 및 응답 버스(S) 상에서의 레인들의 수, 각각의 버스에 걸쳐 송신될 데이터의 UI에 대한 시간의 양, 수신 구성요소가 수신된 패킷이 오류가 없음을 검증하기 전에 수신 구성요소에서 예상되는 파이프라인 지연들의 수, 송신 구성요소에서 큐들의 최대 깊이, 긴급 메시지들(예로서, 큐의 앞에 위치된 긴급 메시지들)을 전송하기 위해 송신 구성요소의 정책에 관련된 정보 등을 포함한다. 상기 열거된 인자들은 예들로서 제공되며 수행될 다양한 동작들에 대한 예상 시간을 결정하기 위해 사용될 수 있는 인자들의 범위를 제한하지 않는다는 것이 주의되어야 한다.
데이터 재배열 동작들
트랜잭션 윈도우들은 주어진 트랜잭션 윈도우에 대한 순서를 표시하기 위해 사용될 수 있지만, 몇몇 인스턴스들에서, 각각의 트랜잭션 윈도우들의 순서에 따라 트랜잭션 동작들을 수행하는 것은 바람직하지 않을 수 있다. 예를 들면, DRAM은 리프레시 동작을 수반할 수 있으며, 이것은 다른 DRAM 동작들에 의해 연기될 수 없다. 또 다른 예는 NAND 메모리가 소거 동작을 준비하기 위해 언제 데이터를 셔플링할 수 있는지를 포함할 수 있다. 여기에서, 셔플링되는 데이터와 연관된 어드레스들의 범위는 트랜잭션 동작이 동일한 범위의 어드레스들을 액세스하려고 한다면 일시적으로 이용 가능하지 않을 수 있다. 이와 같이, 확장 가능 프로토콜이 트랜잭션 윈도우들에 따른 특정된 순서에도 불구하고 동작들을 재배열하는 것이 유익할 수 있다.
종래의 시스템들에서, 다양한 기술들이 순서화를 허용하기 위해 사용된다. 예를 들면, 시스템은 요청 동작을 갖고 트랜잭션 식별을 전송할 수 있다. 응답 동작은 그 후 동일한 트랜잭션 식별을 포함할 수 있다. 트랜잭션 식별은 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)에서 응답들의 다음 그룹을 예상하였다면, 재배열 메시지는 상기 시퀀스 내에서 무엇이든 변경할 수 있다. 예를 들면, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 및 15의 새로운 순서가 선호될 수 있으며, 따라서 각각의 값은 각각의 4-비트 값을 갖고 표현된다. 보류 중인 16개보다 적은 응답들이 있다면, 존재하지 않는 미래 응답들이 순서대로 열거될 수 있다. 즉, 상기 예를 다시 참조하면, 0 내지 7이 보류 중이며 응답 0이 다른 것들의 모두 후까지 지연되도록 선호된다면, 비트(8 내지 15)의 순서는 0이 다른 것들의 모두 후 제공되는 한 끝에 남아있을 수 있다.
일 실시예에서, 재배열 메시지는 새로운 순서화가 선호되는 언제든 전송될 수 있다. 상기 예를 다시 참조하면, 응답들이 순서(1, 2, 3, 4, 5, 6, 7, 및 0)로 전송되며 그 후 남아있는 아이템들이 예상된 순서로 전송될 수 없다고 결정되면, 새로운 재배열 메시지가 전송될 수 있다. 여기에서, 바로 다음 응답은, 순서 카운터가 재배열 메시지가 전송되는 언제든 0으로 리셋되기 때문에, 응답 8이 아닌, 응답 0일 것이다. 이와 같이, 새로운 재배열 메시지를 전송할 때, 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)은 로우(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)는 그것들이 상이한 트랜잭션 윈도우들을 나타내며 그에 따라 상이한 메모리 유형들 상에서 동작할 가능성이 있기 때문에 제1 Win3 요청을 수행하기 위해 제3 Win2 요청을 지연시킬 수 있다. 각각의 패킷의 트랜잭션 윈도우들을 사용하여, 호스트 SoC(12)는 그 후 요청된 동작들을 수행하기 위해 새로운 순서를 결정할 수 있다.
동작들을 수행하기 위한 새로운 순서를 결정한 후, 블록(130)에서, 호스트 SoC(12)는 식별된 동작에 부합하는 패킷 바로 이전의 패킷 후 수신되는 다수의 패킷들을 재명명할 수 있다. 일 실시예에서, 호스트 SoC(12)는 큐에서 그것들의 현재 위치에 따라 패킷들을 재명명할 수 있다. 예를 들면, 도 13을 다시 참조하면, 호스트 SoC(12)가 나중에 수행되어야 하는 동작을 포함한 패킷으로서 원래 패킷(5)을 식별하면, 호스트 SoC(12)는 큐에서 그것들의 현재 위치에 따라 패킷(4) 후 패킷들을 재명명할 수 있다. 이와 같이, 패킷들(5 내지 10)은 다이어그램(140)의 로우(144)에서 예시된 바와 같이 패킷들(0 내지 5)로 재명명될 수 있다. 이러한 방식으로, 남아있는 패킷들은 큐에서 그것들의 상대적 위치에 따라 재명명될 수 있다.
남아있는 패킷들을 재명명한 후, 블록(132)에서, 호스트 SoC(12)는 남아있는 패킷들이 호스트 SoC(12)에 의해 또는 호스트 SoC(12)에 의해 수행될 대응하는 동작들의 순서에 따라 어드레싱될 새로운 순서를 표시하는 재배열 메시지를 생성할 수 있다. 재배열 메시지는 블록(130)에서 제공된 바와 같이, 블록(128)에서 결정된 새로운 순서에 기초하여 및 재명명된 패킷들에 따라 결정될 수 있다. 예를 들면, 도 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개의 요청 버스들이 있다면, 요청 및 응답 버스들의 연관된 쌍은 채널로서 확장 가능 프로토콜에 의해 명명될 수 있다. 이와 같이, 일 실시예에서, 트랜잭션 동작은 "채널.윈도우.어드레스(channel.window.address)"로서 정의될 수 있다. 여기에서, 순서화는 그 후 "채널.윈도우.데이터시퀀스번호(channel.window.dataSequenceNumber)"로서 정의될 수 있다. 종종, 단지 하나의 자료만이 트랜잭션 동작의 부분일 수 있으며, 따라서 데이터 시퀀스 번호는 종종 최대 지원된 패킷 크기보다 큰 트랜잭션 요청들을 제외하기 위해 중요하지 않다. 그렇지 않다면, 확장 가능 프로토콜은 채널.윈도우 내에서의 순서화를 따를 수 있다. 두 개의 채널들이 동일한 윈도우를 사용할 때조차, 확장 가능 프로토콜은 그것들 사이에서 임의의 순서화를 통합하지 않을 수 있다. 대신에, 확장 가능 프로토콜은 각각의 채널.윈도우 조합 내에서 순서를 제공할 수 있다. 그 결과, 확장 가능 프로토콜은 채널들이 비동기식 타이밍 연관성들의 가능성을 갖기 ‹š문에 시스템의 동작을 크게 간소화할 수 있다. 채널.윈도우에 따라 트랜잭션 동작들을 순서화함으로써, 확장 가능 프로토콜은 순서화를 간단하게 유지하며 또한 중재가 수행될 수 있는 횟수를 감소시킨다. 게다가, 이러한 순서화 기술은 또한 그 외 전송되는 재배열 메시지들의 수를 감소시킬 수 있다.
데이터 재배열 동작들 - 높은 빈도
확장 가능 프로토콜이 전송되는 트랜잭션 동작들에 대한 새로운 상대적 순서를 제공하는 것이 가능한 것으로 설명되었지만, 높은 빈도의 재배열 요청들을 가질 수 있는 대형 시스템들에서 이러한 유형의 재배열 기법을 통합하는 것은 어려울 수 있다. 즉, 재배열 메시지들이 몇몇 높은 빈도로(즉, 특정한 문턱값 이상) 전송된다면, 그것은 더 이상 재배열 메시지들을 전송하며 트랜잭션 동작들을 재배열하기 위한 시간 및 리소스들의 효율적인 사용이 아닐 수 있다. 다시 말해서, 몇몇 유형들의 시스템들에 대해, 데이터 재배열의 빈도는 너무 높아서 송신 구성요소 및 수신 구성요소 사이에서의 통신들의 양은 비효율적이게 될 수 있다. 이러한 시스템들에 대해, 확장 가능 프로토콜은 다수의 재배열 이벤트들이 선호될 때조차 트랜잭션 식별들의 비트 트래픽을 감소시킬 수 있다.
일 실시예에서, 수신 구성요소는 현재 재배열 기술이 비효율적으로 동작하는지를 결정할 수 있다. 예를 들면, 송신 구성요소는 재배열 메시지들이 수신 구성요소로부터 수신되는 빈도를 결정할 수 있다. 빈도가 몇몇 문턱값 이상이면, 송신 구성요소는 현재 재배열 기법이 비효율적으로 동작한다고 결정할 수 있다. 이때, 송신 구성요소는 새로운 필드를 포함하기 위해 각각의 트랜잭션 동작의 각각의 트랜잭션 식별(ID)을 첨부할 수 있다: 요청 버스(Q) 시퀀스 번호. 수신 구성요소는 요청들이 수신되는 순서를 알고 있을 수 있으므로, 수신 구성요소는 라운드-로빈 시퀀스 번호를 각각의 수신된 요청(즉, 요청 버스(Q) 시퀀스 번호, Qsequence 또는 Qseq)에 할당할 수 있다. 요청 버스(Q) 시퀀스 번호는 각각의 요청의 각각의 윈도우 및 각각의 채널의 조합에 적용할 수 있다. 이와 같이, 요청 버스(Q) 시퀀스 번호가 "채널.윈도우.Qseq(channel.window.Qseq)"로 표시될 수 있으며, 따라서 Qseq는 각각의 개별적인 채널 및 각각의 윈도우에 대해 라운드 로빈 순서로 할당될 수 있으며, 그에 의해 알려진 데이터를 송신하지 않음으로써 대역폭을 보존할 수 있다. 예를 들면, 요청들의 순서(모두 채널 0 상에 있는)가 다음과 같이: Win2, Win2, Win2, Win3, Win3, Win2, 및 Win3이며 이것들이 제1 트랜잭션들이면, 수신기에 의해 첨부된 할당된 Qseq 번호들은: 각각 0, 1, 2, 0, 1, 3, 및 2일 것이다. 즉, 각각의 윈도우는 요청의 각각의 유형(즉, 채널/윈도우)의 수신에 기초하여 라운드 로빈 Qseq 시퀀스와 연관될 수 있다.
요청들을 수신한 후 및 응답이 응답 버스(S) 상에서 전송될 계획일 때, 수신 구성요소는 그것의 대응하는 Qseq 값을 갖고 각각의 개별적인 응답을 태그할 수 있다. 이와 같이, 송신 구성요소는 그것의 각각의 요청과 각각의 수신된 응답을 연관시킬 수 있다. 도시된 바와 같이, 상기 설명된 기술은 요청 버스(Q) 상에서 Qseq 값을 송신하는 것을 회피한다. Q 버스 상에서 Qseq 값을 전송하지 않음으로써, 확장 가능 프로토콜은 비트-효율적 전송을 제공할 부가적인 방식을 제공한다.
이를 고려하여, 도 14는 수신 구성요소에 의해 수행된 재배열 동작들을 위한 방법(160)을 예시한다. 다시, 방법(120)에 관하여 상기 언급된 바와 같이, 다음의 방법(160)은 호스트 SoC(12)에 의해 수행되는 것으로 설명될 것이다. 그러나, 다음의 방법(160)은 임의의 적절한 수신 구성요소에 의해 수행될 수 있다는 것이 이해되어야 한다.
이제 도 14를 참조하면, 블록(162)에서, 호스트 SoC(12)는 몇몇 시간 기간에 걸쳐 송신 구성요소에 송신된 재배열 메시지들의 수가 몇몇 문턱값을 초과하는지를 결정할 수 있다. 문턱값은 메모리 디바이스(14)의 쇠퇴하는 성능, 동작을 수행할 때 수반된 사이클들의 평균 수, 각각의 요청된 동작에 대한 평균 큐 깊이 등에 관련될 수 있다.
재배열 요청들의 수가 문턱값보다 크지 않다면, 호스트 SoC(12)는 상기 설명된 방법(120)에 따라 재배열 메시지들을 계속해서 전송할 수 있다. 그러나, 호스트 SoC(12)가 재배열 요청들의 수가 문턱값보다 크다고 결정하면, 호스트 SoC(12)는 블록(164)으로 진행할 수 있다. 블록(164)에서, 호스트 SoC(12)는 각각의 패킷의 트랜잭션 윈도우에 따라 라운드 로빈 방식으로 각각의 수신된 패킷에 시퀀스 값을 부가할 수 있다. 송신 구성요소는 각각의 패킷이 송신된 순서를 저장할 수 있으며, 따라서 송신의 순서는 각각의 패킷이 수신된 순서에 대응할 수 있다.
블록(166)에서, 호스트 SoC(12)는 그것들 각각의 동작들이 수행된 순서로 응답 패킷들을 전송할 수 있다. 응답 패킷들은 블록(164)에서 수신된 패킷에 부가된 시퀀스 값을 포함할 수 있다. 송신 구성요소는 각각의 패킷이 전송된 순서를 알고 있으므로, 그것은 적절한 요청 패킷에 응답 패킷을 적용하기 위해 부가된 시퀀스 값을 사용할 수 있다. 응답 패킷들을 송신하기 위한 방법(160)을 사용하여, 호스트 SoC(12) 및 송신 구성요소는 양쪽 송신들 모두 상에서 시퀀스 번호를 유지하는 것과 대조적으로, 버스(62)에 걸쳐 한 번 송신되는 패킷들에 시퀀스 번호를 부가할 수 있다. 이러한 방식으로, 확장 가능 프로토콜은, 패킷들이 송신된 순서와 같은, 송신 구성요소에 의해 알려진 정보를 레버리징함으로써 비트 효율적인 데이터 전송들을 제공한다.
특정한 실시예들에서, 다수의 패킷들을 요구하는 긴 트랜잭션과 같은 경우에, 수신 구성요소는 오류가 발생하였을 때 각각의 패킷을 식별하기 위해 요청 버스(Q) 시퀀스 번호(Qseq) 및 데이터 시퀀스 번호(DataSequence)를 사용할 수 있으며 파이프라인은 플러싱될 수 있고 파이프라인 내에서의 대응하는 패킷들은 재전송될 수 있다. 예를 들면, 오류가 응답 버스(S) 상에서의 패킷에서 발생하였다면, 송신 구성요소에 의해 수신된 가장 최근의 양호한 것으로 알려진 패킷은 참조로서 사용하기 위해 그 안에 Qseq 번호를 포함할 수 있다. 이러한 기술을 이용한 결과로서, 메시지들의 일부는 트랜잭션 유형이 트랜잭션을 표시하기 위해 참조되지 않으므로 실제로 이제 더 짧다. 즉, 그 외 트랜잭션 유형을 표시하기 위해, 패킷 내에서 트랜잭션 유형, 윈도우, 및 어드레스는, 최대 52 비트까지 이러한 정보를 포함하기 위해 사용될 수 있다. 반대로, Qseq 값 및 데이터시퀀스 값을 전송하는 것은 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 비트를 사용할 수 있다. 보다 실질적인 시나리오는 대략 100,000개의 미해결된 트랜잭션들이 있을 수 있는 경우 대략 4 킬로바이트의 보다 큰 트랜잭션들을 예상한다. 여기에서, 각각의 트랜잭션은 단지 17 비트 하에서 식별될 수 있다. 작은 트랜잭션을 갖고 보다 양호한 성능을 허용하기 위해 및 또한 어떤 식별 앨리어싱도 없음을 보장하기 위해, 비트 카운트는 18 비트까지 반올림될 수 있다. 즉, 숫자들은 0까지 랩 어라운드를 모듈로할 수 있으며 따라서 혼란을 피하기 위해 언제든지 "살아있는" 시퀀스에서 명백한 갭이 있을 수 있다.
어떤 경우라도, 재배열 시퀀스를 제공할 때, 확장 가능 프로토콜은 요청 버스(Q) 시퀀스 번호를 대응하는 패킷에 부가할 수 있다. 이와 같이, 상기 설명된 필드들 중 일부는 변할 수 있다. 예를 들면, 요청 버스(Q) 상에서, 부정-확인 응답 명령은 그것이 동일한 트랜잭션 유형 및 동일한 트랜잭션 윈도우를 갖도록 변할 수 있다. 이전에, 부정-확인 응답 명령은 어드레스, 데이터 시퀀스 번호, 및 원래 트랜잭션 유형을 포함하였을 수 있다. 일 실시예에서, 부정-확인 응답 명령은 이제 요청 버스(Q) 시퀀스 번호 및 데이터 시퀀스 번호를 가질 수 있다. 그 결과, 부정-확인 응답 명령은 이전에 설명된 것보다 작은 패킷일 수 있다.
응답 버스(S) 상에서, 일반 메시지 트랜잭션 유형은 변경되지 않을 수 있다. 그러나, 패킷의 남아있는 아이템들은 다음과 같이 변할 수 있다:
Figure 112016126833385-pct00004
"완료" 메시지는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 및 ECC를 가질 수 있다.
Figure 112016126833385-pct00005
"부정-확인 응답"(NACK) 메시지는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 데이터 시퀀스 번호, 및 ECC를 가질 수 있다.
Figure 112016126833385-pct00006
"메시지"는 변경되지 않을 수 있으며, 따라서 트랜잭션 유형, 윈도우, 8B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00007
8uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 8B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00008
16uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 16B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00009
32uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 32B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00010
48uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 48B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00011
64uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 64B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00012
80uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 80B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00013
96uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 96B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00014
112uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 112B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00015
128uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 128B 데이터, 및 ECC를 포함할 수 있다.
Figure 112016126833385-pct00016
256uData는 트랜잭션 유형, 윈도우, 요청 시퀀스 번호, 256B 데이터, 및 ECC를 포함할 수 있다.
상기 언급된 바와 같이, 데이터 트랜잭션 유형들은 고 성능 NAND를 가진 시스템들에서조차, 요청 시퀀스 번호의 양에 의해 패킷 크기들이 증가할 수 있지만, 결과적인 시퀀스 번호는 단지 16b일 수 있다. 이와 같이, 높은 빈도로 재배열되거나, 또는 이와 같이 설계되는 트랜잭션 동작들에 대한 트랜잭션 동작들을 재배열하기 위한 현재 개시된 기술은 16 비트를 모든 응답에 부가할 수 있는, 종래의 프로토콜들과 비교하여 여전히 경제적일 수 있다. 게다가, 현재 개시된 기술은 각각의 응답에 대한 시퀀스 번호를 포함하므로, 확장 가능 프로토콜은 재배열 메시지들 또는 패킷들을 발행하지 않을 수 있다. 뿐만 아니라, 각각의 트랜잭션 동작은 특정한 시퀀스 번호와 연관되므로, 트랜잭션 동작은 알려진 데이터가 송신되지 않음을 보장하기 위해 라운드 로빈 순서로 송신될 수 있다.
순서화 노력 필드
상기 논의된 바와 같이, 상황들은 하나의 트랜잭션 윈도우에서 트랜잭션 동작들이 순서대로 선호될 때 발생하지만, 상기 순서에서 벗어나는 것이 유익할 수 있다. 이를 고려하여, 상기 설명된 트랜잭션 동작들을 재배열하기 위한 두 개의 기술들 외에, 일 실시예에서, 확장 가능 프로토콜은 시스템에서 트랜잭션 동작들 또는 패킷들을 순서화하기 위한 유연한 프로그래밍 옵션을 제공할 수 있다. 유연한 프로그래밍 옵션(예로서, 순서화 노력 필드)은 확장 가능 프로토콜이 트랜잭션들의 원래 순서를 유지할 때 사용해야 하는 노력의 정도를 설정할 수 있다. 즉, 유연한 순서화 노력 필드는 패킷들이 순서대로 송신됨을 보장하기 위해 그것이 얼마나 열심히 일해야 하는지를 확장 가능 프로토콜에 표시할 수 있다. 이와 같이, 유연한 순서화 노력 필드는 모든 팩을 순서대로 유지하는 것에 대응하는 제1 값 및 무엇이든 재배열되도록 허용하는 것에 대응하는 제2 값 사이에서의 값들의 범위와 연관될 수 있다.
이를 고려하여, 트랜잭션 윈도우(0)는 메모리 SoC(22)에 대한 범용 제어 영역으로서 사용될 수 있다. 이와 같이, 트랜잭션 윈도우(0)는 레지스터들, SRAM 버퍼들, 캐시 SRAM, 및 다른 어드레싱 가능한 제어 피처들에 존재할 수 있다. 각각의 트랜잭션 윈도우에 대해, 확장 가능 프로토콜은 사용자 프로그램될 수 있는 구성 가능한 정보를 가능하게 할 수 있다. 상기 언급된 바와 같이, 일 유형의 구성 가능한 정보(예로서, 순서화 노력 필드)는 원래 순서를 유지할 때의 노력의 정도(즉, 순서화 노력)를 포함할 수 있다. 순서화 노력 필드는 구현들에서 큰 변화를 가질 수 있다. 예를 들면, 2-비트 필드에서, 순서화 노력은 다음과 같이 특성화될 수 있다:
00 - 모든 기회에 재-순서화를 허용한다
01 - 상당한 재-순서화를 허용한다
10 - 일부 재-순서화를 허용한다
11 - 재배열을 허용하지 않으며, 리소스들이 이용 가능할 때까지 기다린다
특정한 실시예들에서, 확장 가능 프로토콜은 특정 순서화 구역들과 특정한 패킷들을 연관시킬 수 있다. 순서화 구역은 대응하는 패킷들이 유사하게 처리됨을 표시할 수 있다. 예를 들면, 동일한 순서화 구역에서의 요청들은 순서대로 있는 것으로 예상될 수 있으며, 순서대로 있는 것이 가능하지 않다면, 송신 구성요소(예로서, 메모리 SoC(22))는 요청들이 순서 외로 송신될 수 있는 정도를 결정하기 위해, 순서화 노력 필드에 의해 특정된 바와 같이, 순서화 노력을 적용할 수 있다.
순서화 구역은 채널, 시스템 윈도우, 및 트랜잭션 윈도우(예로서, channel.syswin.window)의 조합에 관련될 수 있다. 채널은 요청이 수신되는 채널 번호일 수 있다. 시스템 윈도우는 예를 들면, 시스템에서 어떤 SoC가 요청을 발생시켰는지를 특정하는 필드들의 선택적 쌍일 수 있다.
앞서 말한 것을 고려하여, 큐 깊이가 순서화 구역에 대해 16이라고 가정하면 2-비트 필드에서 순서화 노력을 특정하는 적정한 구현은 다음과 같을 수 있다:
00 - 모든 기회에 재-순서화를 허용한다: 결과 슬롯들은 16의 큐 깊이에서 어디든 스와핑되도록 허용한다
01 - 상당한 재-순서화를 허용한다: 결과 슬롯들은 11의 큐 깊이에서 어디든 스와핑되도록 허용한다
10 - 일부 재-순서화를 허용한다: 결과 슬롯들은 6의 큐 깊이에서 어디든 스와핑되도록 허용한다
11 - 재-순서화 없음: 어떤 스와핑도 허용하지 않고, 리소스들이 유휴 상태이도록 허용한다
특정한 실시예들에서, 순서화 노력을 정의하는 순서화 노력 함수는 요청의 나이와 같은 부가적인 변수들을 포함할 수 있다. 예를 들면:
00 - 모든 기회에 재-순서화를 허용한다: 결과 슬롯들은 16의 큐 깊이에서 어디든 스와핑되도록 허용한다
01 - 상당한 재-순서화를 허용한다: 결과 슬롯들은 요청이 오래되면 8 및 요청이 신생이면 14의 큐 깊이에서 어디든 스와핑되도록 허용한다
10 - 일부 재-순서화를 허용한다: 결과 슬롯들은 요청이 오래되면 4 및 요청이 신생이면 8의 큐 깊이에서 어디든 스와핑되도록 허용한다
11 - 재-순서화 없음: 어떤 스와핑도 허용하지 않고, 리소스들이 유휴 상태이도록 허용한다
여기에서, 확장 가능 프로토콜은 요청들이 오래되거나 또는 신생인 것으로 지정될 수 있게 할 수 있다. 예를 들면, 요청은 요청이 7개 이상의 요청 슬롯들에 대해 존재하였다면 오래된 것으로 고려될 수 있는 반면, 요청은 요청이 6 이하 요청 슬롯들에 대해 존재하였다면 신생인 것으로 고려될 수 있다.
상기-열거된 예들은 순서화 노력이 2-비트 필드에서 수량화될 수 있는 가능한 방식들의 작은 서브세트를 예시한다. 순서화 노력의 부가적인 정도들은 보다 크게 사이징된 순서화 노력 필드를 사용하여 특정될 수 있다. 어떤 경우에도, 순서화 노력 필드는 전체 시스템 성능을 동조시킬 때 유용할 수 있는 순서화 노력 기능을 만드는 간단한 프로그램 가능성의 능력을 제공할 수 있다. 특정한 실시예들에서, 호스트 SoC(12)에 의해 이용된 순서화 노력은 호스트 SoC(12)가 파워 온될 때 결정되거나 또는 특정될 수 있다. 즉, 호스트 SoC(12)는 그것이 연결되는 디바이스의 유형 또는 그것이 설계되는 산업의 유형을 결정하며 그에 따라 순서화 노력을 결정할 수 있다.
버스 트래픽 스로틀링을 위한 역압 기능
역압은 버스 트래픽을 수신하는 버퍼(23)(예로서, 선입선출(FIFO) 버퍼)의 이용 가능한 용량에 대하여 각각의 버스 상에서 버스 트래픽의 양을 나타낼 수 있다. 이와 같이, 각각의 버스의 역압은 버퍼 트래픽을 수신한 버퍼(23)가 그것의 깊이 제한에 가까울 때 높은 것으로 고려될 수 있다. 일단 버퍼(23)가 가득 차게 되면, 종래의 시스템들에서 수신 구성요소는 미래 인입 패킷들을 무시하거나 또는 인입 패킷을 수용하며 버퍼(23)에서 현재 패킷을 삭제할 수 있다. 이들 경우들 중 어느 하나에서, 패킷들은 프로세싱되지 않을 수 있으며 따라서 통신 링크의 무결성이 손상될 수 있다.
이를 고려하여, 도 15는 송신기로부터 전송된 요청들의 송신 레이트의 속도를 낮추기 위한 방법(180)의 흐름도를 예시한다. 다시 다음의 방법(180)은 예시적인 목적들을 위해 호스트 SoC(12)에 의해 수행되는 것으로 설명되지만 임의의 적절한 수신 구성요소에 의해 수행될 수 있다.
블록(182)에서, 호스트 SoC(12)(예로서, 수신 구성요소)는 버퍼(23)의 용량을 모니터링하며 수신기의 버퍼(23)의 용량이 몇몇 문턱값 미만인지 또는 동일한지를 결정할 수 있다. 버퍼(23)의 용량이 문턱값 이상이면, 호스트 SoC(12)는 블록(184)으로 진행하며 송신 구성요소로부터 현재 송신 레이트에서 패킷들을 계속해서 수신할 수 있다.
그러나, 버퍼(23)의 용량이 문턱값 미만이거나 또는 동일하면, 호스트 SoC(12)는 그 후 블록(186)으로 진행할 수 있다. 블록(186)에서, 호스트 SoC(12)는 그것이 패킷들을 전송하는 레이트를 감소시키기 위해 메시지를 송신 구성요소에 전송할 수 있다. 이때, 호스트 SoC(12) 및 송신 구성요소 양쪽 모두는 동일한 알려진 수학 함수에 따라 패킷들의 송신 및 수신을 스로틀링하기 위해 동일한 역압 기능을 사용할 수 있다. 그 결과, 버스 트래픽의 역압은 버퍼(23)에서 현재 데이터 패킷들의 프로세싱을 위해 수용하도록 감소될 수 있는 반면, 패킷을 잃는 가능성을 감소시킨다.
일 실시예에서, 버스 트래픽은 미해결된 트랜잭션 카운트가 최대 윈도우 값(windowMax) 및 최대 채널 값(channelMax)에 도달함에 따라 속도가 낮춰질 수 있다. ChannelMax 및 windowMax 필드들은 사용자 또는 확장 가능 프로토콜에 의해 독립적으로 설정될 수 있다. ChannelMax 필드는 정의된 최대 송신 레이트에 대응할 수 있다. 예를 들면, channelMax는 초당 1x109개 요청들로 설정될 수 있다. WindowMax 필드는 미해결된 트랜잭션 동작들의 수에 대응할 수 있다. 예시적인 역압 기능은 windowMax 또는 channelMax가 90% 용량에 있는 후 요청 레이트를 선형적으로 감소시키는 것을 포함할 수 있다. 이때, 송신 레이트는 0.900*Max에서 100%일 수 있으며 0.995*Max에서 0%로 선형적으로 달라질 수 있다. 도 16은 상기 설명된 선형 함수에 따라 송신 레이트가 어떻게 축소될 수 있는지를 그래픽으로 예시한다.
송신 레이트를 선형적으로 축소시키는 것 외에, 송신 구성요소는 또한 비-선형 함수에 따라 그것의 송신들을 축소시킬 수 있다. 도 17은, 예를 들면, 그것의 송신 레이트를 축소시킬 때 송신 구성요소에 의해 이용될 수 있는 하나의 가능한 비-선형 곡선을 예시한다. 송신 구성요소는 도 17에 묘사된 곡선에 따라 비-선형 송신 레이트를 이용하는 것에 제한되지 않는다는 것이 이해되어야 한다. 또 다른 예에서, 비-선형 곡선은 한정된 단계들에 의해 송신 레이트를 증분적으로 축소하는 하향식 곡선을 포함할 수 있다.
단지 하나의 트랜잭션 윈도우가 채널 상에 있는 경우들에서, windowMax 필드는 적절하지 않을 수 있거나 또는 channelMax 필드와 동일한 것으로 고려될 수 있다. 다수의 트랜잭션 윈도우들이 있는 경우에, 상이한 역압 기능들이 각각의 개별적인 트랜잭션 윈도우에 대해 정의될 수 있다. 예를 들면, 이하에서 설명된 바와 같이 다양한 상이한 메모리 유형들을 사용하는 트랜잭션 윈도우들의 다음의 4개의 예들을 고려하자.
윈도우0 -제어 및 레지스트리
윈도우1 -최저 지연시간 DRAM
윈도우2 - 정규 DRAM
윈도우 3 - NAND
이를 고려하여, 역압 기능이 채널의 트래픽에 기초하여 어떻게 스로틀링될 수 있는지에 대한 예는 채널 최대치(예로서, 초당 1x109 요청들)을 정의하는 것, 역압 기능이 시작할 수 있는 때(예로서, RollbackStart 0.9 p.u.)를 정의하는 것, 및 역압 기능이 종료할 수 있는 때(예로서, RollbackEnd 1 p.u.)를 정의하는 것을 포함할 수 있다. 이 예에서, 롤백 함수는 Max로서 불리우는 변수에 적용할 수 있으며, 이것은 채널 최대치에 대응할 수 있다. 일반적으로, 채널 최대치는 요청들(또는 트랜잭션 순서들)이 채널 요청 레이트가 0.9 * 채널 최대치(예로서, RollbackStart까지)보다 작거나 또는 그것과 동일한 동안 전송되는 레이트에 대응한다.
동일한 방식으로, 각각의 개별적은 트랜잭션 윈도우는 각각의 역압 기능을 이용할 수 있다. 예를 들면, 상기 정의된 4개의 예시적인 트랜잭션 윈도우들의 역압 기능들은 다음과 같이 구현될 수 있다:
윈도우0 ( window0 )
window0max 0.05 p.u.의 최대치
window0RollbackStart 0.045 p.u.의 최대치
window0RollbackEnd 0.05 p.u.의 최대치
윈도우1 ( window1 )
window1max 0.9 p.u.의 최대치
window1RollbackStart 0.81 p.u.의 최대치
window1RollbackEnd 0.9 p.u.의 최대치
윈도우2 ( window2 )
window2max 0.3 p.u.의 최대치
window2RollbackStart 0.27 p.u.의 최대치
window2RollbackEnd 0.3 p.u.의 최대치
윈도우3 ( window3 )
window3max 0.1 p.u.의 최대치
window3RollbackStart 0.09 p.u.의 최대치
window3RollbackEnd 0.1 p.u.의 최대치
상기 도시된 바와 같이, 역압 기능은 상호 작용하는 많은 트랜잭션 윈도우들(즉, 많은 동시 프로세스들)이 있을 때 요청 레이트들을 점진적으로 롤 백할 수 있다. 어떤 경우에도, 송신된 신호들을 사용하는 것과 대조적으로, 기능에 따라 스로틀링 동작들을 수행함으로써, 확장 가능 프로토콜은 송신된 신호들이 대역-내인지 대역 외인지에 관계되지 않을 수 있다. 게다가, 수신 구성요소 및 송신 구성요소는 기능을 구현할 때 전달할 필요 없이 동일한 수학 함수를 구현할 수 있으므로, 확장 가능 프로토콜은 각각의 개별적인 버스에 걸쳐 전송된 비트의 양을 추가로 감소시킬 수 있다.
특정한 실시예들에서, 역압기능은 또한 각각의 요청의 나이를 고려할 수 있다. 예를 들면, 보다 오래된 요청들이 트랜잭션 윈도우에서 풀링한다면, 수신 구성요소는 windowMax의 값을 조정할 수 있거나 또는 상기 특정한 트랜잭션 윈도우에 대한 롤백 한계들을 수정할 수 있다.
또 다른 실시예에서, 역압기능은 또한 큐 깊이를 고려할 수 있다. 즉, 가동 시작 시, 메모리 SoC(22)는 트랜잭션 윈도우 등에서 제공된 정보에 기초하여 메모리 SoC(22)에 연결된 모듈(들)의 능력을 발견하기 위한 능력을 가질 수 있다. 능력들의 부분은 메모리 SoC(22)에 연결된 수신기(들)의 큐 깊이를 관찰하는 것을 포함할 수 있으며 아마도 또한 연결된 채널의 공칭 패킷-프로세싱 레이트를 발견할 수 있다. 메모리 SoC(22)는 수신기의 큐들을 추적할 수 없을 수 있지만, 메모리 SoC(22)는 수신기의 큐들의 상태에 관한 몇몇 결정들을 할 수 있다. 예를 들면, 메모리 SoC(22)가 수신 구성요소의 패킷-프로세싱 레이트를 초과하여 빠르게 연속적으로 많은 패킷들을 전송한다면, 메모리 SoC(22)는 수신기 구성요소에서의 큐가 커질 것이라고 예측할 수 있다. 이와 같이, 메모리 SoC(22)가 패킷들이 수신기의 패킷-프로세싱 레이트보다 빠르게 전송된다고 결정하면, 메모리 SoC(22)는 수신기로부터 명시적인 피드백을 수신하지 않고 상기 설명된 역압기능들을 적용하기 시작할 수 있다. 다시 말해서, 패킷 송신 레이트가 패킷-패킷 프로세싱 레이트를 초과한다면, 메모리 SoC(22)는 패킷 송신 레이트를 감소시키기 시작할 수 있다. 이러한 방식으로, 송신 레이트는 채널들에 메시지들을 부가하지 않고 감소될 수 있다. 몇몇 실시예들에서, 수신 구성요소는 수신 구성요소가 그것의 예상된 레이트에서 패킷들을 프로세싱하지 않을 때 페일세이프(failsafe)로서 메시지를 메모리 SoC(22)로 전송할 수 있다.
또 다른 실시예에서, 수신 구성요소는 버퍼(23)가 막 오버런되거나 또는 그것의 용량을 초과함을 송신 구성요소에 표시하기 위해 시스템 페일세이프 메커니즘을 포함할 수 있다. 여기에서, 수신 구성요소는 상기 설명된 부정-확인 응답 메시지와 유사한 메시지를 전송할 수 있다. 이러한 메시지는 패킷을 수용할 수 없는 버퍼(23)로 인해 메시지가 거절되었음을 주의하기 위해 그것이 송신 구성요소의 데이터 로그에 엔트리를 생성할 수 있다는 것을 제외하고 부정-확인 응답 메시지와 동일한 효과를 가질 수 있다. 이와 같이, 송신 구성요소는 버스 트래픽에서 지연에 대한 이유를 결정할 수 있다.
여기에서 설명된 실시예들은 다양한 수정들 및 대안적인 형태들에 영향을 받기 쉬울 수 있지만, 특정 실시예들은 도면들에서 예로서 도시되며 여기에서 상세히 설명되었다. 그러나, 개시는 개시된 특정한 형태들에 제한되도록 의도되지 않는다는 것이 이해되어야 한다. 오히려, 개시는 다음의 첨부된 청구항들에 의해 정의된 바와 같이 개시에서 설명된 기술들 및 시스템의 사상 및 범위 내에 있는 모든 수정들, 등가물들, 및 대안들을 커버하는 것이다.

Claims (32)

  1. 메모리 디바이스에 있어서,
    데이터를 저장하도록 구성된 메모리 구성요소;
    프로세서를 포함하고, 상기 프로세서는:
    상기 메모리 구성요소와 연관된 하나 이상의 데이터 패킷을 생성하고, 각각의 데이터 패킷은:
    상기 각각의 데이터 패킷의 페이로드의 제1 크기 및 상기 각각의 데이터 패킷에서 오류 제어 코드의 제2 크기를 표시한 데이터를 포함한 트랜잭션 유형 필드;
    상기 페이로드를 포함한 페이로드 필드 - 상기 페이로드는 트랜잭션 윈도우 필드, 어드레스 필드, 및 우회 레벨들 필드(levels of indirection field)를 포함함 -; 및
    상기 오류 제어 코드를 포함한 오류 제어 코드 필드를 포함하고,
    상기 하나 이상의 데이터 패킷을 요청 구성요소에 송신하도록 구성되고, 상기 요청 구성요소는 각각의 데이터 패킷에서 상기 트랜잭션 유형 필드의 상기 데이터에 기초하여 각각의 데이터 패킷의 상기 페이로드 필드 및 상기 오류 제어 코드 필드를 식별하도록 구성되는, 메모리 디바이스.
  2. 청구항 1에 있어서, 상기 데이터는 복수의 트랜잭션 유형 중 하나에 대응하는 이진 값을 포함하되, 상기 복수의 트랜잭션 유형의 각각은 데이터 동작과 연관되는, 메모리 디바이스.
  3. 청구항 2에 있어서, 상기 이진 값은 상기 복수의 트랜잭션 유형 중 상기 하나를 결정하기 위한 룩업 테이블에 대한 인덱스로서 사용되는, 메모리 디바이스.
  4. 청구항 2에 있어서, 상기 데이터 동작은 판독 동작, 메시지 데이터의 송신, 판독-수정-기록(RMW), 데이터세트의 송신, 패턴 기록 동작, 기록-과-가능 동작, 또는 기록 동작을 포함하는, 메모리 디바이스.
  5. 청구항 2에 있어서, 상기 복수의 트랜잭션 유형의 각각은 상기 각각의 패킷의 크기를 암시적으로 정의하는, 메모리 디바이스.
  6. 청구항 1에 있어서, 상기 트랜잭션 윈도우 필드는 상기 데이터 패킷들이 연관되는 메모리의 유형을 표시하는 제1 데이터세트를 포함하는, 메모리 디바이스.
  7. 청구항 6에 있어서, 상기 제1 데이터세트는 상기 구성요소의 예상 지연시간을 표시하는, 메모리 디바이스.
  8. 청구항 1에 있어서, 상기 트랜잭션 윈도우 필드는 상기 데이터 패킷들을 수신하도록 구성된 구성요소와 관계되기 위한 규칙들의 세트와 연관된 제1 데이터세트를 포함하는, 메모리 디바이스.
  9. 청구항 1에 있어서, 상기 어드레스 필드는 상기 메모리 구성요소의 어드레스와 연관되는, 메모리 디바이스.
  10. 청구항 1에 있어서, 상기 어드레스 필드는 저장 디바이스에서 위치를 참조하는 가상 어드레스를 포함하는, 메모리 디바이스.
  11. 청구항 1에 있어서, 상기 우회 레벨들 필드는 최종 메모리 어드레스와 상기 어드레스 필드에서 제공된 메모리 어드레스 사이에서의 우회 레벨들의 수를 표시한 값을 포함하는, 메모리 디바이스.
  12. 청구항 11에 있어서, 상기 프로세서는:
    상기 우회 레벨들의 수에 기초하여 최종 메모리 어드레스를 식별하며; 그리고
    상기 최종 메모리 어드레스를 사용하여 동작을 수행하도록 구성되는, 메모리 디바이스.
  13. 방법에 있어서,
    프로세서에 의해, 초기화 신호를 수신하는 단계;
    상기 프로세서에 의해, 상기 초기화 신호를 수신한 후 상기 프로세서에 통신적으로 결합된 하나 이상의 메모리 유형을 결정하는 단계;
    상기 프로세서에 의해, 상기 메모리 유형들의 각각에 트랜잭션 윈도우를 할당하는 단계 - 상기 트랜잭션 윈도우는 상기 메모리 유형들의 각각을 표시함 -; 및
    상기 프로세서에 의해, 상기 프로세서에 액세스 가능한 저장 디바이스로 상기 메모리 유형들의 각각에 대한 상기 트랜잭션 윈도우를 저장하는 단계를 포함하는, 방법.
  14. 청구항 13에 있어서,
    상기 프로세서에 의해, 상기 저장 디바이스에서 제공된 바와 같은 상기 트랜잭션 윈도우에 기초하여 하나 이상의 데이터 패킷을 생성하는 단계 - 각각의 데이터 패킷은:
    상기 각각의 데이터 패킷의 페이로드의 제1 크기 및 상기 각각의 데이터 패킷에서 오류 제어 코드의 제2 크기를 표시한 데이터를 포함한 트랜잭션 유형 필드;
    상기 트랜잭션 윈도우 및 상기 페이로드를 포함한 페이로드 필드; 및
    상기 오류 제어 코드를 포함한 오류 제어 코드 필드를 포함함 -; 및
    상기 프로세서에 의해, 상기 데이터 패킷들을 또 다른 프로세서에 송신하는 단계를 포함하는, 방법.
  15. 청구항 13에 있어서, 상기 초기화 신호는 상기 프로세서의 작동 시작(power up) 시 상기 프로세서에 제공되는, 방법.
  16. 청구항 13에 있어서, 상기 메모리 유형들의 각각에 상기 트랜잭션 윈도우를 할당하는 단계는 상기 메모리 유형들의 각각의 하나 이상의 능력을 결정하는 단계 및 상기 능력들에 기초하여 상기 트랜잭션 윈도우를 할당하는 단계를 포함하는, 방법.
  17. 청구항 16에 있어서, 상기 능력들은 용량, 판독 동작에 대한 제1 지연시간, 기록 동작에 대한 제2 지연시간, 또는 그것의 임의의 조합을 포함하는, 방법.
  18. 청구항 16에 있어서, 상기 메모리 유형들 중 적어도 두 개는 동일한 트랜잭션 윈도우에 할당되는, 방법.
  19. 시스템에 있어서,
    프로세서를 포함한 메모리 디바이스;
    요청 구성요소를 포함하고, 상기 요청 구성요소는:
    상기 프로세서로 송신될 데이터 동작의 표시를 수신하고;
    상기 데이터 동작에 대응하는 트랜잭션 유형 값을 식별하고;
    상기 데이터 동작의 페이로드를 결정하고;
    상기 데이터 동작과 연관된 우회 레벨들의 수를 결정하고;
    상기 트랜잭션 유형 값, 상기 페이로드, 및 상기 우회 레벨들의 수를 포함한 패킷을 생성하며; 그리고
    상기 패킷을 상기 프로세서로 송신하도록 구성된, 시스템.
  20. 청구항 19에 있어서, 상기 데이터 동작은 전송될 메시지, 판독 동작, 또는 기록 동작을 포함하는, 시스템.
  21. 청구항 19에 있어서, 상기 요청 구성요소는 상기 데이터 동작이 수행되도록 요청하는 소프트웨어에 의해 제공된 데이터에 기초하여 상기 트랜잭션 유형 값을 식별하도록 구성되는, 시스템.
  22. 청구항 19에 있어서, 상기 요청 구성요소는 상기 데이터 동작이 수행되도록 요청하는 소프트웨어로부터 수신된 명령 및 복수의 트랜잭션 유형을 포함한 룩업 테이블을 사용하여 상기 트랜잭션 유형 값을 식별하도록 구성되는, 시스템.
  23. 메모리 디바이스의 프로세서에 있어서,
    요청 구성요소로 송신될 데이터 동작의 표시를 수신하고;
    상기 요청 구성요소에 의해 수행될 데이터 동작에 대응하는 트랜잭션 유형 값을 식별하고;
    상기 데이터 동작의 페이로드를 결정하고 - 상기 페이로드는 트랜잭션 윈도우 필드, 어드레스 필드, 및 우회 레벨들의 수 필드를 포함함 -;
    상기 트랜잭션 유형 값 및 상기 페이로드를 포함한 패킷을 생성하며; 그리고
    상기 패킷을 상기 요청 구성요소로 송신하도록 구성되는, 메모리 디바이스의 프로세서.
  24. 청구항 23에 있어서, 상기 트랜잭션 유형 값은 상기 페이로드의 크기를 표시하는, 메모리 디바이스의 프로세서.
  25. 청구항 23에 있어서,
    상기 페이로드와 연관된 오류 제어 코드(ECC) 값을 결정하며; 그리고
    상기 ECC 값을 포함한 상기 패킷을 생성하도록 구성된, 메모리 디바이스의 프로세서.
  26. 청구항 24에 있어서, 상기 트랜잭션 윈도우 필드는 상기 트랜잭션 윈도우 필드에 따라 특정된 가상 채널에 따라 데이터 패킷들의 송신들을 그룹핑하도록 구성되는, 메모리 디바이스의 프로세서.
  27. 유형의(tangible), 비-일시적, 기계-판독 가능한 매체에 있어서, 상기 매체는 프로세서-실행 가능한 지시들을 저장하고, 상기 지시들은 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금:
    메모리 구성요소를 사용하여 데이터 동작이 수행되는 요청을 수신하고;
    복수의 데이터 동작에 따라 인덱싱된 복수의 트랜잭션 유형을 포함한 룩업 테이블에 기초하여 상기 데이터 동작과 연관된 트랜잭션 유형을 결정하고;
    상기 데이터 동작과 연관된 패킷을 생성하고 - 상기 패킷은 상기 트랜잭션 유형을 포함하고, 상기 패킷은, 상기 메모리 구성요소의 어드레스와 상이한 메모리 구성요소에서의 또 다른 어드레스 사이에서의 상기 데이터 동작에 수반된 우회 레벨들의 수, 상기 메모리 구성요소의 상기 어드레스, 및 상기 메모리 구성요소의 유형에 대응하는 트랜잭션 윈도우로 이루어진 페이로드를 포함함 -; 그리고
    상기 패킷을 파싱한 후 상기 데이터 동작을 수행하도록 구성된 또 다른 프로세서로 상기 패킷을 전송하도록 하는, 유형의, 비-일시적, 기계-판독 가능한 매체.
  28. 청구항 27에 있어서, 상기 메모리 구성요소는 동적 랜덤-액세스 메모리 또는 NAND 메모리를 포함하는, 유형의, 비-일시적, 기계-판독 가능한 매체.
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020167036182A 2014-06-02 2015-06-01 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들 KR102197401B1 (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,446 2015-05-28
US14/724,446 US9733847B2 (en) 2014-06-02 2015-05-28 Systems and methods for transmitting packets in a scalable memory system protocol
PCT/US2015/033564 WO2015187572A1 (en) 2014-06-02 2015-06-01 Systems and methods for transmitting packets in a scalable memory system protocol

Publications (2)

Publication Number Publication Date
KR20170012400A KR20170012400A (ko) 2017-02-02
KR102197401B1 true KR102197401B1 (ko) 2021-01-04

Family

ID=54701759

Family Applications (3)

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

Family Applications Before (2)

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

Country Status (6)

Country Link
US (16) US9823864B2 (ko)
EP (6) EP3149602B1 (ko)
KR (3) KR101796413B1 (ko)
CN (9) CN106489134B (ko)
TW (6) TWI554883B (ko)
WO (6) WO2015187578A1 (ko)

Families Citing this family (72)

* 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
ES2860708T3 (es) * 2016-02-19 2021-10-05 Viasat Inc Métodos y sistemas para la asignación de capacidad de red multinivel
US9997232B2 (en) * 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
TWI587133B (zh) 2016-05-20 2017-06-11 慧榮科技股份有限公司 資料儲存裝置之資料頁對齊方法及其查找表的製作方法
JP2018049387A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
US11314648B2 (en) 2017-02-08 2022-04-26 Arm Limited Data processing
US10216671B2 (en) 2017-02-27 2019-02-26 Qualcomm Incorporated Power aware arbitration for bus access
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10318381B2 (en) * 2017-03-29 2019-06-11 Micron Technology, Inc. Selective error rate information for multidimensional memory
CN109478168B (zh) 2017-06-23 2020-12-04 华为技术有限公司 内存访问技术及计算机系统
US10713189B2 (en) * 2017-06-27 2020-07-14 Qualcomm Incorporated System and method for dynamic buffer sizing in a computing device
US11294594B2 (en) * 2017-08-07 2022-04-05 Kioxia Corporation SSD architecture supporting low latency operation
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems
US10908820B2 (en) 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems
GB201717295D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Synchronization in a multi-tile processing array
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
GB2569276B (en) 2017-10-20 2020-10-14 Graphcore Ltd Compiler method
CN107943611B (zh) * 2017-11-08 2021-04-13 天津国芯科技有限公司 一种快速产生crc的控制装置
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10622075B2 (en) 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
CN110022268B (zh) * 2018-01-09 2022-05-03 腾讯科技(深圳)有限公司 一种数据传输控制方法、装置及存储介质
CN108388690B (zh) * 2018-01-16 2021-04-30 电子科技大学 元胞自动机实验平台
KR20190099879A (ko) * 2018-02-20 2019-08-28 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
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
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
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
US10496478B1 (en) * 2018-05-24 2019-12-03 Micron Technology, Inc. Progressive length error control code
US10409680B1 (en) 2018-05-24 2019-09-10 Micron Technology, Inc. Progressive length error control code
US11074007B2 (en) * 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US10969994B2 (en) * 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
TWI813743B (zh) * 2018-08-23 2023-09-01 美商阿爾克斯股份有限公司 在網路路由環境中的獨立資料儲存空間
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
EP4081890A4 (en) 2019-12-26 2024-01-17 Micron Technology Inc TRUTH TABLE EXTENSION FOR STACKED MEMORY SYSTEMS
US11455098B2 (en) 2019-12-26 2022-09-27 Micron Technology, Inc. Host techniques for stacked memory systems
KR20220116259A (ko) * 2019-12-26 2022-08-22 마이크론 테크놀로지, 인크. 적층 메모리 시스템의 비-결정 동작을 위한 기술
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
WO2021216288A1 (en) 2020-04-10 2021-10-28 The Procter & Gamble Company Cleaning implement with a rheological solid composition
US20210345177A1 (en) * 2020-05-04 2021-11-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
CN113840272A (zh) * 2021-10-12 2021-12-24 北京奕斯伟计算技术有限公司 数据传输方法、数据传输装置以及电子装置
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

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004510252A (ja) 2000-09-29 2004-04-02 アラクリテック・インコーポレイテッド インテリジェントネットワークストレージインタフェースシステム及びデバイス
US20070156946A1 (en) 2005-12-29 2007-07-05 Intel Corporation Memory controller with bank sorting and scheduling
JP2009527820A (ja) 2006-02-21 2009-07-30 フリースケール セミコンダクター インコーポレイテッド エラー訂正方法およびエラー訂正装置
US20100023800A1 (en) 2005-09-26 2010-01-28 Eliyahou Harari NAND Flash Memory Controller Exporting a NAND Interface
US20120023365A1 (en) 2010-07-26 2012-01-26 Apple Inc. Methods and systems for monitoring write operations of non-volatile memory
US20120113721A1 (en) 2008-02-04 2012-05-10 Mosaid Technologies Incorporated Flexible memory operations in nand flash devices
US20130339592A1 (en) 2012-06-13 2013-12-19 Shu-Yi Yu Approach to virtual bank management in dram controllers
US20140129747A1 (en) 2001-08-24 2014-05-08 Jasmin Ajanovic General input/output architecture, protocol and related methods to implement flow control

Family Cites Families (208)

* 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
DE60036453T2 (de) * 1999-11-22 2008-06-19 Sony Corp. Videobandaufzeichnungs- und wiedergabegerät und videobandabspielgerät
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
US20020167945A1 (en) * 2000-11-22 2002-11-14 Yeshik Shin Method and system for packet ordering based on packet type
US20020069318A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew Real time application accelerator 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 삼성전자주식회사 패킷 통신시스템에서 매체 접속 제어 계층 엔터티들 간의 시그널링 방법
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
US7974243B2 (en) * 2003-06-18 2011-07-05 Nippon Telegraph And Telephone Corporation Wireless packet communication method and wireless packet communication apparatus
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
US7859996B2 (en) * 2004-10-29 2010-12-28 Broadcom Corporation Intelligent congestion feedback apparatus and method
US7830801B2 (en) * 2004-10-29 2010-11-09 Broadcom Corporation Intelligent fabric congestion detection 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
JP2009503743A (ja) * 2005-08-03 2009-01-29 サンディスク コーポレイション データファイルを直接記憶するメモリブロックの管理
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
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
EP1980074A4 (en) * 2006-02-13 2012-12-19 Digital Fountain Inc CONTINUOUS CONTINUOUS CONTINUOUS TRANSMISSION WITH CONCURRENT FLUX AGGREGATION FOR CONTINUOUS CONTROL CALCULATION
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
BRPI0621900A2 (pt) * 2006-07-25 2011-12-20 Thomson Licensing recuperação a partir de perda de pacote em rajadas em redes sem fio baseadas em protocolo internet usando transmissão escalonada e correção antecipada de erro de pacote cruzado
US8407395B2 (en) 2006-08-22 2013-03-26 Mosaid Technologies Incorporated Scalable memory system
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
EP2084864A1 (en) * 2006-10-24 2009-08-05 Medianet Innovations A/S Method and system for firewall friendly real-time communication
WO2008055271A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Seamless application access to hybrid main 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
US8533384B2 (en) * 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US8355336B2 (en) * 2008-02-13 2013-01-15 Qualcomm Incorporated Methods and apparatus for formatting headers in a communication frame
JP5141606B2 (ja) * 2008-03-26 2013-02-13 セイコーエプソン株式会社 印刷装置
US8724636B2 (en) * 2008-03-31 2014-05-13 Qualcomm Incorporated Methods of reliably sending control signal
EP2279576A4 (en) * 2008-04-24 2012-02-01 Ericsson Telefon Ab L M ERROR RATE MANAGEMENT
US8374986B2 (en) * 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US8223796B2 (en) * 2008-06-18 2012-07-17 Ati Technologies Ulc Graphics multi-media IC and method of its operation
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 한국전자통신연구원 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치
WO2010041469A1 (ja) * 2008-10-09 2010-04-15 日本電気株式会社 コンテンツ配信システム、コンテンツ配信方法およびコンピュータプログラム
US8402190B2 (en) * 2008-12-02 2013-03-19 International Business Machines Corporation Network adaptor optimization and interrupt reduction
US20100161938A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Supporting A Networked Array Of Configurable Symmetric Multiprocessing Nodes
US8737374B2 (en) * 2009-01-06 2014-05-27 Qualcomm Incorporated System and method for packet acknowledgment
JP5168166B2 (ja) * 2009-01-21 2013-03-21 富士通株式会社 通信装置および通信制御方法
EP2214100A1 (en) * 2009-01-30 2010-08-04 BRITISH TELECOMMUNICATIONS public limited company Allocation of processing tasks
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
WO2011033600A1 (ja) * 2009-09-21 2011-03-24 株式会社 東芝 仮想記憶管理装置
WO2011041269A2 (en) * 2009-09-30 2011-04-07 Samplify Systems, Inc. Enhanced multi-processor waveform data exchange using compression and decompression
US8719516B2 (en) * 2009-10-21 2014-05-06 Micron Technology, Inc. Memory having internal processors and methods of controlling memory access
US9477636B2 (en) 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US8281218B1 (en) * 2009-11-02 2012-10-02 Western Digital Technologies, Inc. Data manipulation engine
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8183452B2 (en) * 2010-03-23 2012-05-22 Yamaha Corporation Tone generation apparatus
US8321753B2 (en) 2010-04-13 2012-11-27 Juniper Networks, Inc. Optimization of packet buffer memory utilization
CN101883446B (zh) * 2010-06-28 2014-03-26 华为终端有限公司 一种sd控制芯片及数据通信方法
US9537488B1 (en) * 2010-05-13 2017-01-03 Altera Corporation Apparatus for configurable interface and associated methods
US8295292B2 (en) * 2010-05-19 2012-10-23 Telefonaktiebolaget L M Ericsson (Publ) High performance hardware linked list processors
US20110299588A1 (en) * 2010-06-04 2011-12-08 Apple Inc. Rate control in video communication via virtual transmission buffer
US8539311B2 (en) * 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
KR101719395B1 (ko) * 2010-07-13 2017-03-23 샌디스크 테크놀로지스 엘엘씨 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법
US20120192026A1 (en) * 2010-07-16 2012-07-26 Industrial Technology Research Institute Methods and Systems for Data Transmission Management Using HARQ Mechanism for Concatenated Coded System
US8386887B2 (en) 2010-09-24 2013-02-26 Texas Memory Systems, Inc. High-speed memory system
EP2622775B1 (en) * 2010-10-01 2014-02-26 Koninklijke Philips 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 データ処理装置及び半導体装置
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
JP5800565B2 (ja) 2011-05-11 2015-10-28 キヤノン株式会社 データ転送装置及びデータ転送方法
KR20130021865A (ko) * 2011-08-24 2013-03-06 삼성전자주식회사 이동통신 시스템의 고정자원 할당 방법 및 장치
US8832331B2 (en) * 2011-08-29 2014-09-09 Ati Technologies Ulc Data modification for device communication channel packets
CN107391397B (zh) * 2011-09-30 2021-07-27 英特尔公司 支持近存储器和远存储器访问的存储器通道
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
US8793543B2 (en) * 2011-11-07 2014-07-29 Sandisk Enterprise Ip Llc Adaptive read comparison signal generation for memory systems
US9048876B2 (en) * 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8954822B2 (en) * 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
CN104011660B (zh) * 2011-12-22 2017-03-01 英特尔公司 用于处理位流的基于处理器的装置和方法
US9264368B2 (en) 2012-01-27 2016-02-16 Marvell World Trade Ltd. Chip-to-chip communications
KR102133930B1 (ko) * 2012-02-17 2020-07-21 삼성전자 주식회사 데이터 패킷 송수신 장치 및 방법
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
WO2013153577A1 (en) * 2012-04-12 2013-10-17 Hitachi, Ltd. Data transfer method and storage system adopting data transfer method
US20150103668A1 (en) * 2012-06-27 2015-04-16 Qualcomm Incorporated Low overhead and highly robust flow control apparatus and method
US10034023B1 (en) * 2012-07-30 2018-07-24 Google Llc Extended protection of digital video streams
US9444751B1 (en) * 2012-08-03 2016-09-13 University Of Southern California Backpressure with adaptive redundancy
GB2505956B (en) * 2012-09-18 2015-08-05 Canon Kk Method and apparatus for controlling the data rate of a data transmission between an emitter and a receiver
US9215174B2 (en) * 2012-10-18 2015-12-15 Broadcom Corporation Oversubscription buffer management
JP6139689B2 (ja) * 2012-10-22 2017-05-31 インテル・コーポレーション 装置
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
WO2014204128A1 (ko) * 2013-06-19 2014-12-24 엘지전자 주식회사 Mtc 기기의 수신 방법
KR102123439B1 (ko) * 2013-11-20 2020-06-16 삼성전자 주식회사 이동 망에서 비디오 트래픽의 사용자 만족도 최적화를 고려한 혼잡 완화 방법 및 그 장치
GB2520724A (en) * 2013-11-29 2015-06-03 St Microelectronics Res & Dev Debug circuitry
US9699079B2 (en) * 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
JP6249403B2 (ja) * 2014-02-27 2017-12-20 国立研究開発法人情報通信研究機構 光遅延線及び電子バッファ融合型光パケットバッファ制御装置
US9813815B2 (en) * 2014-05-20 2017-11-07 Gn Hearing A/S Method of wireless transmission of digital audio
KR102310580B1 (ko) * 2014-10-24 2021-10-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US9185045B1 (en) * 2015-05-01 2015-11-10 Ubitus, Inc. Transport protocol for interactive real-time media
US10003529B2 (en) * 2015-08-04 2018-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for memory allocation in a software-defined networking (SDN) system
KR102525295B1 (ko) * 2016-01-06 2023-04-25 삼성전자주식회사 데이터 관리 방법 및 장치
KR102589410B1 (ko) * 2017-11-10 2023-10-13 삼성전자주식회사 메모리 장치 및 그의 파워 제어 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004510252A (ja) 2000-09-29 2004-04-02 アラクリテック・インコーポレイテッド インテリジェントネットワークストレージインタフェースシステム及びデバイス
US20140129747A1 (en) 2001-08-24 2014-05-08 Jasmin Ajanovic General input/output architecture, protocol and related methods to implement flow control
US20100023800A1 (en) 2005-09-26 2010-01-28 Eliyahou Harari NAND Flash Memory Controller Exporting a NAND Interface
US20070156946A1 (en) 2005-12-29 2007-07-05 Intel Corporation Memory controller with bank sorting and scheduling
JP2009527820A (ja) 2006-02-21 2009-07-30 フリースケール セミコンダクター インコーポレイテッド エラー訂正方法およびエラー訂正装置
US20120113721A1 (en) 2008-02-04 2012-05-10 Mosaid Technologies Incorporated Flexible memory operations in nand flash devices
US20120023365A1 (en) 2010-07-26 2012-01-26 Apple Inc. Methods and systems for monitoring write operations of non-volatile memory
US20130339592A1 (en) 2012-06-13 2013-12-19 Shu-Yi Yu Approach to virtual bank management in dram controllers

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102197401B1 (ko) 확장 가능 메모리 시스템 프로토콜로 패킷들을 송신하기 위한 시스템들 및 방법들

Legal Events

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