KR20180032733A - 직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치 - Google Patents

직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치 Download PDF

Info

Publication number
KR20180032733A
KR20180032733A KR1020160121638A KR20160121638A KR20180032733A KR 20180032733 A KR20180032733 A KR 20180032733A KR 1020160121638 A KR1020160121638 A KR 1020160121638A KR 20160121638 A KR20160121638 A KR 20160121638A KR 20180032733 A KR20180032733 A KR 20180032733A
Authority
KR
South Korea
Prior art keywords
storage device
data
packet
characteristic
packets
Prior art date
Application number
KR1020160121638A
Other languages
English (en)
Inventor
이영민
서성호
박현태
오화석
최진혁
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020160121638A priority Critical patent/KR20180032733A/ko
Priority to US15/702,035 priority patent/US10296261B2/en
Priority to CN201710815886.9A priority patent/CN107870743B/zh
Publication of KR20180032733A publication Critical patent/KR20180032733A/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/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/0658Controller construction 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 임베디드 스토리지 장치 및 어플리케이션 프로세서를 포함하는 전자 장치를 제공한다. 임베디드 스토리지 장치는 제 1 특성을 갖는 패킷을 처리하는 착탈식 스토리지 장치와 직접 통신하도록 연결된다. 임베디드 스토리지 장치는 제 2 특성을 갖는 패킷을 처리한다. 어플리케이션 프로세서는 임베디드 스토리지 장치와 직접 통신하도록 연결되지만, 착탈식 스토리지 장치와 직접 연결되지 않는다. 어플리케이션 프로세서는 제 3 특성을 갖는 패킷을 처리한다. 임베디드 스토리지 장치는, 착탈식 스토리지 장치로부터 수신되는 제 1 특성의 제 1 패킷, 및 임베디드 스토리지 장치에서의 제 2 특성의 제 2 패킷 중 적어도 하나가 제 3 특성에 따라 어플리케이션 프로세서로 제공되도록, 제 1 특성 및 제 2 특성 중 적어도 하나를 보상한다. 본 발명에 따르면, 전자 장치의 설계/생산 비용 및 구성 복잡도가 감소할 수 있다.

Description

직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치 {ELECTRONIC DEVICE CONFIGURED TO COMPENSATE DIFFERENT CHARACTERISTICS OF SERIALLY CONNECTED STORAGE DEVICES, AND STORAGE DEVICE INCLUDED THEREIN}
본 발명은 전자 회로들 또는 장치들 사이의 통신에 관한 것으로, 좀 더 구체적으로는 전자 회로들 또는 장치들 사이의 인터페이스(Interface)를 위해 패킷(Packet) 및 정보를 관리/처리하는 구성들 및 동작들에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 하나 이상의 전자 회로들의 동작에 따라 고유의 기능들을 수행한다. 전자 장치는 고유의 기능들을 수행함으로써 사용자에게 서비스를 제공한다. 전자 장치는 단독으로 동작하여 서비스를 제공할 수 있다. 몇몇 전자 장치는 다른 전자 장치 또는 외부 전자 회로와 통신하여 서비스를 제공할 수도 있다.
연산 처리기(Operation Processor) 및 스토리지 장치(Storage Device)는 전자 장치들의 몇몇 예시이다. 예로서, 연산 처리기는 스토리지 장치와 통신(예컨대, 인터페이싱)하여, 사용자에게 데이터 스토리지 서비스를 제공할 수 있다. 연산 처리기는 스토리지 장치와 인터페이싱하면서, 스토리지 장치와 데이터/정보/신호/패킷을 교환할 수 있다. 연산 처리기 및 스토리지 장치는 서로 통신하기 위해 인터페이스 규약(Interface Protocol)을 채용할 수 있다.
더 높은 성능 및 효율을 갖는 전자 장치에 대한 요구가 증가함에 따라, 전자 장치의 구성 및 인터페이스 방식이 다양하게 진화하여 왔다. 예로서, 더 큰 용량을 갖는 스토리지 장치를 구현하기 위해, 다양한 회로 구성 및 동작 방법이 제안되어 왔다. 그러나, 몇몇 경우, 사용자 요구를 충족시키기 위해 회로 구성 및 동작 방법을 변경하는 것은 비용, 구성 복잡도, 및 회로 면적의 증가를 야기할 수 있다.
본 발명의 실시 예들은 상대적으로 낮은 복잡도를 가지면서도 사용자 요구를 충족시킬 수 있는 전자 장치를 제공할 수 있다. 본 발명의 실시 예들에 따른 전자 장치는 복수의 장치의 상이한 특성(Characteristic)들을 보상(Compensate)하기 위한 구성들 및 동작들을 제공할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 임베디드 스토리지 장치 및 어플리케이션 프로세서를 포함할 수 있다. 임베디드 스토리지 장치는 제 1 특성을 갖는 패킷을 처리할 수 있는 착탈식 스토리지 장치와 직접 통신하도록 연결될 수 있다. 임베디드 스토리지 장치는 제 2 특성을 갖는 패킷을 처리할 수 있다. 어플리케이션 프로세서는 임베디드 스토리지 장치와 직접 통신하도록 연결될 수 있지만, 착탈식 스토리지 장치와 직접 연결되지 않을 수 있다. 어플리케이션 프로세서는 제 3 특성을 갖는 패킷을 처리할 수 있다. 임베디드 스토리지 장치는, 착탈식 스토리지 장치로부터 수신되는 제 1 특성의 제 1 패킷, 및 임베디드 스토리지 장치에서의 제 2 특성의 제 2 패킷 중 적어도 하나가 제 3 특성에 따라 어플리케이션 프로세서로 제공되도록, 제 1 특성 및 제 2 특성 중 적어도 하나를 보상할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는 컨트롤러, 불휘발성 메모리, 및 보상 회로를 포함할 수 있다. 컨트롤러는 서로 직접 연결되지 않는 호스트 장치 및 외부 스토리지 장치 각각과 직접 통신할 수 있다. 컨트롤러는 제 1 특성을 갖는 패킷을 처리할 수 있다. 불휘발성 메모리는 컨트롤러의 제어에 따라 데이터를 저장하거나 출력할 수 있다. 보상 회로는, 제 2 특성을 갖는 패킷을 처리할 수 있는 호스트 장치로부터 수신되는 제 2 특성의 패킷이 외부 스토리지 장치에 의해 처리될 수 있는 패킷의 제 3 특성에 따라 외부 스토리지 장치로 전달되거나 제 1 특성에 따라 컨트롤러에 의해 처리되도록, 제 1 특성, 제 2 특성, 및 제 3 특성 사이의 차이를 보상할 수 있다.
본 발명의 실시 예들에 따르면, 전자 장치의 설계/생산 비용 및 구성 복잡도가 감소할 수 있다. 따라서, 본 발명의 실시 예들은 사용자 요구를 충족시키면서도 경제적인 혜택을 가져올 수 있다. 몇몇 실시 예에 따르면, 상이한 특성들을 갖는 복수의 장치의 상이한 동작 방식들이 보상될 수 있다. 따라서, 복수의 장치를 위해 복수의 통신 채널을 구현하는 대신, 하나의 통신 채널만 구현하는 것이 가능해질 수 있고, 이로써 전자 장치의 설계/생산 비용 및 구성 복잡도가 더욱 감소할 수 있다.
도 1은 본 발명의 실시 예에 따라 직렬로 연결되는 스토리지 장치들을 포함하는 스토리지 시스템을 보여주는 블록도이다.
도 2a 내지 도 2d는 도 1의 스토리지 시스템의 예시적인 구현들을 보여주는 개념도들이다.
도 3은 도 1의 스토리지 장치들의 예시적인 구성들을 보여주는 블록도이다.
도 4a 내지 도 4d는 데이터 쓰기 요청 패킷들의 전송을 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도들이다.
도 5a 내지 도 5c는 패킷의 데이터 부분의 재구성을 처리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도들이다.
도 6은 도 3의 스토리지 장치들에 포함되는 메모리 영역들의 식별 번호들의 맵핑을 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도이다.
도 7a 및 도 7b는 패킷들의 데이터 순서(Sequence)의 정렬(Ordering)을 처리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도들이다.
도 8은 도 3의 스토리지 장치들 각각의 처리율(Throughput)에 따라 패킷 분배를 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도이다.
도 9는 패킷의 처리에 관한 우선순위(Priority)에 따라 패킷 분배를 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도이다.
도 10은 도 3의 제 2 스토리지 장치의 예시적인 구성을 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따라 직렬로 연결되는 전자 장치들을 포함하는 전자 시스템을 보여주는 블록도이다.
도 12a 및 도 12b는 도 11의 전자 시스템에서 연산 처리 장치에 직접 연결되지 않는 전자 장치와 통신하는 예시적인 과정들을 설명하기 위한 개념도들이다.
도 13은 본 발명의 실시 예에 따른 전자 장치의 예시적인 구성 및 그것의 인터페이스들을 나타낸 블록도이다.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.
도 1은 본 발명의 실시 예에 따라 직렬로 연결되는 스토리지 장치들을 포함하는 스토리지 시스템(1000)을 보여주는 블록도이다. 스토리지 시스템(1000)은 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400)를 포함할 수 있다.
연산 처리 장치(1100)는 스토리지 시스템(1000)의 전반적인 동작들을 관리하고 처리하기 위해, 다양한 산술 연산/논리 연산을 수행할 수 있다. 예로서, 연산 처리 장치(1100)는 하나 이상의 프로세서 코어들을 포함하는 전용 회로(예컨대, FPGA(Field Programmable Gate Arrays), ASICs(Application Specific Integrated Circuits) 등) 또는 SoC(System on Chip)로 구현될 수 있다. 예로서, 연산 처리 장치(1100)는 범용 프로세서, 전용 프로세서, 및/또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. 연산 처리 장치(1100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
제 1 스토리지 장치(1300)는 하나 이상의 불휘발성 메모리들(1310) 및 컨트롤러(1320)를 포함할 수 있다. 제 2 스토리지 장치(1400)는 하나 이상의 불휘발성 메모리들(1410) 및 컨트롤러(1420)를 포함할 수 있다.
불휘발성 메모리들(1310, 1410)은 데이터를 저장하기 위한 메모리 영역들을 포함할 수 있다. 예로서, 불휘발성 메모리들(1310, 1410)은 낸드 플래시 메모리(NAND-type Flash Memory), PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리 중 하나 이상을 포함할 수 있다.
컨트롤러들(1320, 1420)은 각각 스토리지 장치들(1300, 1400)의 전반적인 동작들을 제어할 수 있다. 이를 위해, 컨트롤러들(1320, 1420) 각각은 하나 이상의 프로세서 코어들 및 버퍼 메모리를 포함할 수 있다. 예로서, 컨트롤러들(1320, 1420)은 데이터가 불휘발성 메모리들(1310, 1410)에 저장되거나 불휘발성 메모리들(1310, 1410)에 저장된 데이터가 출력되게 불휘발성 메모리들(1310, 1410)을 제어할 수 있다.
연산 처리 장치(1100)는 스토리지 장치들(1300, 1400)로 커맨드(Command), 쿼리(Query), 및/또는 요청(Request)을 제공할 수 있다. 연산 처리 장치(1100)는 스토리지 장치들(1300, 1400)과 데이터를 교환할 수 있다. 몇몇 실시 예에서, 커맨드, 쿼리, 요청 및 데이터는 패킷(Packet) 단위로 전송될 수 있으나, 이는 본 발명을 한정하기 위한 것은 아니다. 전송 단위는 다양하게 변경 또는 수정될 수 있다.
예로서, 연산 처리 장치(1100)가 스토리지 장치들(1300, 1400)로 쓰기 커맨드 및 쓰기 데이터를 제공하는 경우, 스토리지 장치들(1300, 1400)은 불휘발성 메모리들(1310, 1410)에 쓰기 데이터를 저장할 수 있다. 예로서, 연산 처리 장치(1100)가 스토리지 장치들(1300, 1400)로 읽기 커맨드를 제공하는 경우, 스토리지 장치들(1300, 1400)은 불휘발성 메모리들(1310, 1410)에 저장된 읽기 데이터를 연산 처리 장치(1100)로 출력할 수 있다.
연산 처리 장치(1100)는 스토리지 장치들(1300, 1400)로부터 스토리지 서비스를 제공받는 호스트(Host) 장치일 수 있다. 이 명세서에서, "호스트"는 다른 장치에 의해 서비스받는 장치를 의미할 수 있다. 연산 처리 장치(1100)의 동작에 따라, 스토리지 시스템(1000)의 사용자는 스토리지 서비스를 제공받을 수 있다.
본 발명의 실시 예에서, 연산 처리 장치(1100) 및 스토리지 장치들(1300, 1400)은 직렬로 연결될 수 있다. 도 1을 참조하면, 연산 처리 장치(1100)는 포트들(PORT0, PORT1a)을 통해 제 1 스토리지 장치(1300)와 직접 통신하도록 연결될 수 있다. 나아가, 제 1 스토리지 장치(1300)는 포트들(PORT1b, PORT2)을 통해 제 2 스토리지 장치(1400)와 직접 통신하도록 연결될 수 있다. 그러나, 연산 처리 장치(1100)는 제 2 스토리지 장치(1400)와 직접 연결되지 않을 수 있다. 예로서, 연산 처리 장치(1100) 및 스토리지 장치들(1300, 1400)은 체인(Chain) 구조 또는 데이지 체인(Daisy-chain) 구조의 토폴로지(Topology)로 연결될 수 있다.
예로서, 컨트롤러(1320)는 연산 처리 장치(1100)와 읽기 데이터 및 쓰기 데이터를 교환하기 위해, 연산 처리 장치(1100)와 직접 통신하도록 구성될 수 있다. 예로서, 컨트롤러들(1320, 1420)은 읽기 데이터 및 쓰기 데이터를 서로 교환하기 위해, 서로 직접 통신하도록 구성될 수 있다. 반면, 컨트롤러(1420)는 연산 처리 장치(1100)와 직접 연결되지 않을 수 있다.
도 1에 나타낸 것과 달리, 연산 처리 장치(1100)는 스토리지 장치들(1300, 1400) 모두와 직접 연결될 수 있다. 예로서, 스토리지 장치들(1300, 1400)은 연산 처리 장치(1100)에 병렬로 연결될 수 있다. 그러나, 이 경우, 연산 처리 장치(1100)는 스토리지 장치들(1300, 1400) 모두와 연결되는 포트들을 포함해야 한다. 게다가, 연산 처리 장치(1100)는 스토리지 장치들(1300, 1400)과 통신하기 위해 통신 회로들 및 그 통신 회로들을 구동/제어하는 주변 회로들을 포함해야 한다.
반면, 도 1에 나타낸 실시 예에 따르면, 연산 처리 장치(1100)는 제 2 스토리지 장치(1400)와 직접 통신하지 않을 수 있다. 따라서, 연산 처리 장치(1100)는 제 1 스토리지 장치(1300)와 연결되는 포트(PORT0), 제 1 스토리지 장치(1300)와 통신하기 위한 통신 회로, 및 이 통신 회로를 구동/제어하는 주변 회로만을 포함할 수 있다. 대신, 제 1 스토리지 장치(1300)가 제 2 스토리지 장치(1400)와 연결되는 포트(PORT1b), 제 2 스토리지 장치(1400)와 통신하기 위한 통신 회로, 및 이 통신 회로를 구동/제어하는 주변 회로를 포함할 수 있다.
따라서, 도 1에 나타낸 실시 예에 따르면, 연산 처리 장치(1100)의 구성이 단순화될 수 있고, 연산 처리 장치(1100)에 의해 차지되는 면적이 감소할 수 있다. 게다가, 연산 처리 장치(1100)의 설계/생산 비용이 감소할 수 있다. 이러한 경제적인 혜택에 더하여, 두 개의 스토리지 장치들(1300, 1400)을 채용하는 것은 하나의 스토리지 장치를 채용하는 경우에 비해 더 많은 스토리지 용량(Capacity)을 제공할 수 있다. 따라서, 사용자 요구가 충족될 수 있다.
이러한 실시 예에서, 제 1 스토리지 장치(1300)의 구성이 다소 복잡해질 수 있다. 그러나, 많은 경우, 연산 처리 장치(1100)는 수 내지 수십 기가헤르츠(GHz)의 속도로 동작할 수 있고, 제 1 스토리지 장치(1300)는 수십 내지 수백 메가헤르츠(MHz)의 속도로 동작할 수 있다. 게다가, 연산 처리 장치(1100)를 제작하기 위한 공정이 제 1 스토리지 장치(1300)를 제작하기 위한 공정보다 더 어렵고 복잡할 수 있다. 따라서, 제 1 스토리지 장치(1300)에 포트(PORT1b), 통신 회로, 및 주변 회로를 구현하는 것이 훨씬 더 단순하고 경제적일 수 있다.
연산 처리 장치(1100) 및 스토리지 장치들(1300, 1400)은 다양한 인터페이스 규약(Interface Protocol) 중 하나 이상에 따라 서로 통신할 수 있다. 예로서, 연산 처리 장치(1100) 및 스토리지 장치들(1300, 1400)은 서로 통신하기 위해 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), NVMe(Nonvolatile Memory Express), SATA(Serial Advanced Technology Attachment), SAS(Serial Attached SCSI), SD(Secure Digital) 카드, eMMC(Embedded Multimedia Card), UFS(Universal Flash Storage) 등과 같은 인터페이스 규약들 중 적어도 하나를 채용할 수 있으나, 다만 이 예는 본 발명을 한정하기 위한 것은 아니다.
도 2a 내지 도 2d는 도 1의 스토리지 시스템의 예시적인 구현들을 보여주는 개념도들이다.
도 2a를 참조하면, 도 1의 스토리지 시스템(1000)은 전자 장치(2000)(예컨대, 스마트 폰, 태블릿 컴퓨터 등)에 구현될 수 있다. 전자 장치(2000)는 어플리케이션 프로세서(2100) 및 임베디드(Embedded) 스토리지 장치(2300)를 포함할 수 있다. 전자 장치(2000)는 착탈식(Removable) 스토리지 장치(2400)를 장착하기 위해 슬롯(Slot, 2004)을 포함할 수 있다. 예로서, 착탈식 스토리지 장치(2400)는 카드, 스틱(Stick), 또는 칩 패키지 형태로 구현될 수 있고, 슬롯(2004)에 장착되거나 슬롯(2004)으로부터 분리될 수 있다.
예로서, 어플리케이션 프로세서(2100)는 도전 패턴(Conductive Pattern, W1)을 통해 임베디드 스토리지 장치(2300)와 직접 통신하도록 연결될 수 있다. 착탈식 스토리지 장치(2400)가 슬롯(2004)에 장착되는 경우, 임베디드 스토리지 장치(2300)는 도전 패턴(W2)을 통해 착탈식 스토리지 장치(2400)와 직접 통신하도록 연결될 수 있다. 반면, 착탈식 스토리지 장치(2400)는 어플리케이션 프로세서(2100)와 직접 연결되지 않을 수 있다.
도 2b 내지 도 2d를 참조하면, 도 1의 스토리지 시스템(1000)은 컴퓨팅 시스템(3000a, 3000b, 또는 3000c)(예컨대, 데스크탑 컴퓨터, 랩탑 컴퓨터, 워크스테이션, 서버 시스템 등)에 구현될 수 있다. 도 2b의 컴퓨팅 시스템(3000a)은 CPU(Central Processing Unit, 3100) 및 스토리지 장치들(3300a, 3400a)을 포함할 수 있다. CPU(3100)는 메인보드(또는 마더보드, 3001) 상에 장착될 수 있다.
예로서, 스토리지 장치들(3300a, 3400a) 각각은 박스 모듈(Box Module)로 구현되는 HDD(Hard Disk Drive) 또는 SSD(Solid State Drive)일 수 있다. 제 1 스토리지 장치(3300a)는 메인보드(3001) 상의 커넥터(Connector, 3003a)와 연결될 수 있고, 도전 패턴(W3) 및 전선 케이블(Wire Cable, W4)을 통해 CPU(3100)와 직접 통신하도록 연결될 수 있다. 제 2 스토리지 장치(3400a)는 전선 케이블(W5)을 통해 제 1 스토리지 장치(3300a)와 직접 통신하도록 연결될 수 있다. 반면, 제 2 스토리지 장치(3400a)는 CPU(3100)와 직접 연결되지 않을 수 있다.
도 2c의 컴퓨팅 시스템(3000b)은 CPU(3100) 및 스토리지 장치들(3300b, 3400b)을 포함할 수 있다. 예로서, 스토리지 장치들(3300b, 3400b) 각각은 카드 모듈(Card Module)로 구현되는 메모리 모듈 또는 SSD일 수 있다. 제 1 스토리지 장치(3300b)는 메인보드(3001) 상의 커넥터(3003b)에 연결될 수 있고, 도전 패턴(W6)을 통해 CPU(3100)와 직접 통신하도록 연결될 수 있다. 제 2 스토리지 장치(3400b)는 메인보드(3001) 상의 커넥터(3004b)에 연결될 수 있고, 도전 패턴(W7)을 통해 제 1 스토리지 장치(3300b)와 직접 통신하도록 연결될 수 있다. 반면, 제 2 스토리지 장치(3400b)는 CPU(3100)와 직접 연결되지 않을 수 있다.
도 2d의 컴퓨팅 시스템(3000c)은 CPU(3100) 및 스토리지 장치들(3300c, 3400c)을 포함할 수 있다. 예로서, 스토리지 장치들(3300c, 3400c) 각각은 칩 또는 칩 패키지로 구현되는 온-보드(On-board) SSD 또는 BGA(Ball Grid Array) SSD일 수 있다. 제 1 스토리지 장치(3300c)는 도전 패턴(W8)을 통해 CPU(3100)와 직접 통신하도록 연결될 수 있고, 도전 패턴(W9)을 통해 제 2 스토리지 장치(3400c)와 직접 통신하도록 연결될 수 있다. 반편, 제 2 스토리지 장치(3400c)는 CPU(3100)와 직접 연결되지 않을 수 있다.
예로서, 제 1 스토리지 장치(3300c)가 BGA SSD인 경우, 제 1 스토리지 장치(3300c)는 기판(12) 상에 실장되는 불휘발성 메모리/컨트롤러 칩(13)을 포함할 수 있다. 불휘발성 메모리/컨트롤러 칩(13)은 본딩(Bonding, 15)을 통해 도전 패턴들(W8, W9)과 연결될 수 있고, 몰드 컴파운드(Mold Compound, 14)로 덮일 수 있다. 제 1 스토리지 장치(3300c)는 솔더 볼(Solder Ball)들(11)을 통해 메인보드(3001) 상에 장착될 수 있다.
몇몇 실시 예에서, 컴퓨팅 시스템들(3000a, 3000b, 3000c) 각각은 CPU(3100)에 의해 처리된 또는 처리될 데이터를 임시로 저장하기 위한 워킹(Working) 메모리, 외부 장치/시스템과 통신하기 위한 통신 회로, 및 사용자와 데이터/정보를 교환하기 위한 유저 인터페이스를 더 포함할 수 있다. 워킹 메모리, 통신 회로, 및 유저 인터페이스는 메인보드(3001) 상에 장착될 수 있고, 도전 패턴들 및/또는 버스들을 통해 CPU(3100)와 연결될 수 있다.
도 2a 내지 도 2d에서, 어플리케이션 프로세서(2100) 및 CPU(3100) 각각은 도 1의 연산 처리 장치(1100)에 대응할 수 있다. 임베디드 스토리지 장치(2300) 및 제 1 스토리지 장치들(3300a, 3300b, 3300c) 각각은 도 1의 제 1 스토리지 장치(1300)에 대응할 수 있다. 착탈식 스토리지 장치(2400) 및 제 2 스토리지 장치들(3400a, 3400b, 3400c) 각각은 도 1의 제 2 스토리지 장치(1400)에 대응할 수 있다. 도 1을 참조하여 설명된 것과 같이, 도 2a 내지 도 2d의 구성들은 사용자 요구를 충족시키면서도 경제적인 혜택을 가져올 수 있다.
예로서, 도전 패턴들(W1, W2, W3, W6, W7, W8, W9)은 PCB(Printed Circuit Board) 또는 메인보드(3001) 상에 형성되는 도전성 물질일 수 있다. 예로서, 도전 패턴들(W1, W2, W3, W6, W7, W8, W9) 각각은 와이어 패턴(Wire Pattern), 트레이스 패턴(Trace Pattern) 등을 포함할 수 있다. 예로서, 도전성 물질은 와이어, 트레이스, 도전판(Conductive Plate) 등으로 구현될 수 있다.
도 3은 도 1의 스토리지 장치들의 예시적인 구성들을 보여주는 블록도이다.
몇몇 실시 예에서, 제 1 스토리지 장치(1300)는 인터커넥트 계층들(1330a, 1330b), 어플리케이션 계층(1340), 및 스위칭 로직(1350)을 더 포함할 수 있다. 인터커넥트 계층(1330a)은 포트(PORT1a)를 통해 데이터/신호/패킷을 송신/수신할 수 있고, 인터커넥트 계층(1330b)은 포트(PORT1b)를 통해 데이터/신호/패킷을 송신/수신할 수 있다. 인터커넥트 계층들(1330a, 1330b)은 제 1 스토리지 장치(1300)에 의해 채용된 인터페이스 규약에서 정의되는 물리 계층 및 링크 계층을 포함할 수 있다. 예로서, 인터커넥트 계층들(1330a, 1330b)은 송신/수신 회로, 변조/복조 회로, 변환기(Converter) 회로 등과 같은 다양한 하드웨어 구성 요소를 포함할 수 있다.
어플리케이션 계층(1340)은 제 1 스토리지 장치(1300)에 의해 채용된 인터페이스 규약의 다양한 커맨드/패킷을 이해하고 처리할 수 있다. 어플리케이션 계층(1340)은 컨트롤러(1320)를 위해 인터페이스 규약을 처리함으로써, 제 1 스토리지 장치(1300) 상에서 통신 서비스를 제공할 수 있다. 예로서, 어플리케이션 계층(1340)은 인터페이스 규약을 처리하기 위해 다양한 하드웨어 회로를 포함할 수 있고, 이에 덧붙여 또는 대안적으로, 프로세서 코어에 의해 실행되는 프로그램 코드의 명령어 집합(Instruction Set)으로 구현될 수 있다.
몇몇 실시 예에서, 제 2 스토리지 장치(1400)는 인터커넥트 계층(1430) 및 어플리케이션 계층(1440)을 더 포함할 수 있다. 인터커넥트 계층(1430)은 포트(PORT2)를 통해 데이터/신호/패킷을 송신/수신할 수 있다. 어플리케이션 계층(1440)은 제 2 스토리지 장치(1400)에 의해 채용된 인터페이스 규약의 다양한 명령어/패킷을 이해하고 처리할 수 있다. 인터커넥트 계층(1430) 및 어플리케이션 계층(1440)은 각각 인터커넥트 계층(1330a) 및 어플리케이션 계층(1340)과 유사하게 구성될 수 있다.
도 3은 인터커넥트 계층들(1330a, 1330b, 1430) 및 어플리케이션 계층들(1340, 1440)이 독립적인 구성 요소들인 것을 보여준다. 그러나, 이러한 구성은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 몇몇 실시 예에서, 인터커넥트 계층들(1330a, 1330b) 및/또는 어플리케이션 계층(1340)은 컨트롤러(1320)에 포함될 수 있고, 인터커넥트 계층(1430) 및/또는 어플리케이션 계층(1440)은 컨트롤러(1420)에 포함될 수 있다.
예로서, 연산 처리 장치(1100)가 제 1 스토리지 장치(1300)와 통신하고자 하는 경우(예컨대, 제 1 스토리지 장치(1300)에 데이터를 저장하거나 제 1 스토리지 장치(1300)로부터 데이터를 읽고자 하는 경우), 연산 처리 장치(1100)는 포트들(PORT0, PORT1a) 및 인터커넥트 계층(1330a)을 통해 어플리케이션 계층(1340)으로 커맨드 및/또는 데이터를 제공할 수 있다. 컨트롤러(1320)는 어플리케이션 계층(1340)에 의해 처리된 정보에 기초하여, 불휘발성 메모리들(1310)에 데이터를 저장하거나 불휘발성 메모리들(1310)로부터 데이터를 읽을 수 있다. 읽힌 데이터는 인터커넥트 계층(1330a) 및 포트들(PORT1a, PORT0)을 통해 연산 처리 장치(1100)로 제공될 수 있다.
한편, 연산 처리 장치(1100)가 제 2 스토리지 장치(1400)와 통신하고자 할 수 있다. 그러나, 연산 처리 장치(1100)는 제 2 스토리지 장치(1400)와 직접 연결되지 않을 수 있기 때문에, 연산 처리 장치(1100)는 제 2 스토리지 장치(1400)를 위해 구성된 커맨드 및/또는 데이터를, 포트들(PORT0, PORT1a) 및 인터커넥트 계층(1330a)을 통해 제 1 스토리지 장치(1300)로 제공할 수 있다. 제 1 스토리지 장치(1300)는 제공된 커맨드 및/또는 데이터를, 인터커넥트 계층(1330b) 및 포트들(PORT1b, PORT2)을 통해 제 2 스토리지 장치(1400)로 전달할 수 있다.
제 2 스토리지 장치(1400)는 인터커넥트 계층(1430)을 통해 제 1 스토리지 장치(1300)로부터 커맨드 및/또는 데이터를 수신할 수 있다. 컨트롤러(1420)는 어플리케이션 계층(1440)에 의해 처리된 정보에 기초하여, 불휘발성 메모리들(1410)에 데이터를 저장하거나 불휘발성 메모리들(1410)로부터 데이터를 읽을 수 있다. 읽힌 데이터는 인터커넥트 계층(1430) 및 포트들(PORT2, PORT1b)을 통해 제 1 스토리지 장치(1300)로 제공될 수 있다.
제 1 스토리지 장치(1300)는 인터커넥트 계층(1330b)을 통해 제 2 스토리지 장치(1400)로부터 데이터를 수신할 수 있다. 제 1 스토리지 장치(1300)는 수신된 데이터를, 인터커넥트 계층(1330a) 및 포트들(PORT1a, PORT0)을 통해 연산 처리 장치(1100)로 전달할 수 있다. 따라서, 제 1 스토리지 장치(1300)는 연산 처리 장치(1100)로부터 수신된 커맨드 및/또는 데이터를 스스로 처리하거나, 제 2 스토리지 장치(1400)로 전달할 수 있다.
몇몇 경우, 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400)는 상이한 특성(Characteristic)들을 가질 수 있다. 이는 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400)가 상이한 목적들, 상이한 성능들, 및 상이한 요구들에 기반하여 설계될 수 있기 때문이다. 예로서, 연산 처리 장치(1100)는 제 1 특성을 갖는 패킷을 처리할 수 있다. 반면, 제 1 스토리지 장치(1300)는 제 2 특성을 갖는 패킷을 처리할 수 있고, 제 2 스토리지 장치(1400)는 제 3 특성을 갖는 패킷을 처리할 수 있다.
예로서, "특성"은 패킷에 포함되는 데이터 부분의 단위 크기와 관련될 수 있다. 이러한 예에서, 연산 처리 장치(1100)는 4킬로 바이트(kilobyte, kB)의 데이터 부분을 포함하는 패킷을 처리할 수 있다. 반면, 제 1 스토리지 장치(1300)의 컨트롤러(1320)는 16kB의 데이터 부분을 포함하는 패킷을 처리할 수 있고, 제 2 스토리지 장치(1400)의 컨트롤러(1420)는 2kB의 데이터 부분을 포함하는 패킷을 처리할 수 있다.
다만, 위 예는 더 나은 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 특성은 그 외 다른 다양한 동작 조건, 요구 사항 등을 포함할 수 있고, 다양한 예가 도 4a 내지 도 9를 참조하여 설명될 것이다. 나아가, 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 각각에 의해 처리되는 데이터 부분의 단위 크기는 목적, 성능, 및 요구에 따라 다양하게 변경 또는 수정될 수 있다.
보상 회로(1350)는 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 사이에서 상이한 특성들을 보상(Compensate)할 수 있다. 예로서, 보상 회로(1350)는 연산 처리 장치(1100)에 의해 처리되는 패킷의 제 1 특성, 제 1 스토리지 장치(1300)에 의해 처리되는 패킷의 제 2 특성, 및 제 2 스토리지 장치(1400)에 의해 처리되는 패킷의 제 3 특성 사이의 차이를 보상할 수 있다.
이 명세서에서, "보상"은 상이한 특성들을 갖는 패킷들이 여러 전자 장치에서 처리될 수 있도록 패킷들을 적절히 처리/관리하는 동작들을 의미할 수 있다. 보상 동작들의 다양한 예가 도 4a 내지 도 9를 참조하여 설명될 것이다.
예로서, 제 1 스토리지 장치(1300)는 연산 처리 장치(1100)를 위해 제 2 스토리지 장치(1400)로부터 제 3 특성의 패킷을 수신할 수 있다. 나아가, 제 1 스토리지 장치(1300)에서, 컨트롤러(1320)(및/또는 어플리케이션 계층(1340))는 연산 처리 장치(1100)를 위해 제 2 특성의 패킷을 준비할 수 있다. 보상 회로(1350)의 동작에 기초하여, 제 2 특성의 패킷 및 제 3 특성의 패킷 중 적어도 하나는 제 1 특성에 따라 연산 처리 장치(1100)로 제공될 수 있다. 이를 위해, 보상 회로(1350)는 제 2 특성 및 제 3 특성 중 적어도 하나를 보상할 수 있다.
예로서, 제 1 스토리지 장치(1300)는 연산 처리 장치(1100)로부터 제 1 특성의 패킷을 수신할 수 있다. 수신된 패킷이 제 1 스토리지 장치(1300)를 위해 구성된 경우, 제 1 스토리지 장치(1300)는 수신된 패킷을 제 2 특성에 따라 제 1 스토리지 장치(1300)의 컨트롤러(1320)(및/또는 어플리케이션 계층(1340))에 의해 처리할 수 있다. 반면, 수신된 패킷이 제 2 스토리지 장치(1400)를 위해 구성된 경우, 제 1 스토리지 장치(1300)는 수신된 패킷을 제 3 특성에 따라 제 2 스토리지 장치(1400)로 전달할 수 있다. 이를 위해, 보상 회로(1350)는 제 1 특성을 보상할 수 있다. 제 2 스토리지 장치(1400)는 제 1 스토리지 장치(1300)를 통해 연산 처리 장치(1100)로부터 수신된 패킷을 컨트롤러(1420)(및/또는 어플리케이션 계층)에 의해 처리할 수 있다.
보상 회로(1350)가 제공되지 않는 경우, 연산 처리 장치(1100)는 제 1 스토리지 장치(1300)와 통신하기 위한 통신 채널(예컨대, 송신/수신 선로, 물리 계층 등) 및 제 2 스토리지 장치(1400)와 통신하기 위한 통신 채널 모두를 요구할 수 있다. 이는 제 1 스토리지 장치(1300)에 의해 처리되는 패킷의 특성이 제 2 스토리지 장치(1400)에 의해 처리되는 패킷의 특성과 다를 수 있기 때문이다. 따라서, 연산 처리 장치(1100)의 설계/생산 비용 및 구성 복잡도가 증가할 수 있다.
반면, 보상 회로(1350)가 제공되는 경우, 보상 회로(1350)는 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400)에 의해 처리되는 패킷들의 상이한 특성들을 보상할 수 있다. 따라서, 연산 처리 장치(1100)는 제 1 스토리지 장치(1300)와 통신하기 위한 통신 채널만을 요구할 수 있고, 하나의 통신 채널만 구현하는 것이 가능해질 수 있다. 이로써, 연산 처리 장치(1100) 및 스토리지 시스템(1000)의 설계/생산 비용 및 구성 복잡도가 감소할 수 있다.
보상 회로(1350)는 보상 동작들을 수행하기 위해 다양한 하드웨어 회로를 포함할 수 있고, 이에 덧붙여 또는 대안적으로, 프로세서 코어에 의해 실행되는 프로그램 코드의 명령어 집합으로 구현될 수 있다. 나아가, 도 3은 보상 회로(1350)가 독립적인 구성 요소인 것을 보여주지만, 보상 회로(1350)는 몇몇 실시 예에서 인터커넥트 계층들(1330a, 1330b) 및/또는 어플리케이션 계층(1340)에 포함될 수 있다.
도 4a 내지 도 4d는 데이터 쓰기 요청 패킷들의 전송을 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도들이다. 몇몇 실시 예에서, 제 1 스토리지 장치(1300)의 보상 회로(1350)는 특성 관리기(1351a), 버퍼(1353a), 및 전송 스케줄러(1355a)를 포함할 수 있다.
도 4a를 참조하면, 특성 관리기(1351a)는 연산 처리 장치(1100)에 관한 제 1 특성, 제 1 스토리지 장치(1300)에 관한 제 2 특성, 및 제 2 스토리지 장치(1400)에 관한 제 3 특성을 관리할 수 있다. 예로서, 특성 관리기(1351a)는 제 1 스토리지 장치(1300) 또는 스토리지 시스템(1000)의 부팅 동작 동안, 제 1 특성, 제 2 특성, 및 제 3 특성에 관한 정보를 수집할 수 있다. 예로서, 특성 관리기(1351a)는 제 1 스토리지 장치(1300)가 동작하는 동안 실시간으로, 제 1 특성, 제 2 특성, 및 제 3 특성에 관한 정보를 수집할 수 있다.
예로서, 제 1 특성, 제 2 특성, 및 제 3 특성에 관한 정보를 수집하기 위해, 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 사이에서 특성 정보를 교환하기 위한 통신 규약이 새로 정의될 수 있다. 예로서, 특성 관리기(1351a)는 수집된 정보를 저장하기 위해, 메모리 장치를 포함하거나 제 1 스토리지 장치(1300)의 메모리 영역(예컨대, 내부 버퍼, 불휘발성 메모리들(1310) 등)을 이용할 수 있다.
도 4a 내지 도 4d의 예에서, 제 1 특성은 연산 처리 장치(1100)에 의해 최대로 지원되는 데이터 쓰기 요청 패킷들의 개수와 관련될 수 있다. 제 2 특성은 제 1 스토리지 장치(1300)에 의해 생성되는 데이터 쓰기 요청 패킷들의 개수와 관련될 수 있고, 제 3 특성은 제 2 스토리지 장치(1400)에 의해 생성되는 데이터 쓰기 요청 패킷들의 개수와 관련될 수 있다.
데이터 쓰기 요청 패킷은 RTT(Ready-to-transfer) 패킷으로 이해될 수 있다. 연산 처리 장치(1100)가 스토리지 장치들(1300, 1400)로 쓰기 커맨드 또는 요청을 전송한 경우, 스토리지 장치들(1300, 1400)은 내부 버퍼의 잔여 용량 등과 같은 가용 자원 정보를 연산 처리 장치(1100)로 알리기 위해 연산 처리 장치(1100)로 데이터 쓰기 요청 패킷을 전송할 수 있다. 연산 처리 장치(1100)는 데이터 쓰기 요청 패킷을 참조하여, 스토리지 장치들(1300, 1400)에 적합하게 쓰기 데이터를 스토리지 장치들(1300, 1400)로 전송할 수 있다.
더 나은 이해를 돕기 위한 예로서, 연산 처리 장치(1100)는 최대 2개의 데이터 쓰기 요청 패킷들을 지원할 수 있다. 나아가, 제 1 스토리지 장치(1300)는 최대 4개의 데이터 쓰기 요청 패킷들을 생성할 수 있고, 제 2 스토리지 장치(1400)는 최대 2개의 데이터 쓰기 요청 패킷들을 생성할 수 있다.
한편, 연산 처리 장치(1100)가 최대 2개의 데이터 쓰기 요청 패킷들을 지원할 수 있기 때문에, 보상 회로(1350)는 최대 2개의 데이터 쓰기 요청 패킷들이 연산 처리 장치(1100)와 교환되도록 허용할 수 있다. 이를 위해, 특성 관리기(1351a)는 연산 처리 장치(1100) 및/또는 보상 회로(1350)와 관련하여, 데이터 쓰기 요청 패킷들의 최대 개수를 2개로 설정할 수 있다. 이러한 설정은 연산 처리 장치(1100)의 요청에 기반하거나, 연산 처리 장치(1100)와 교환되는 특성 정보에 기반할 수 있다.
어플리케이션 계층(1340)은 컨트롤러(1320)의 동작에 의해 생성된 정보에 기초하여, 4개의 데이터 쓰기 요청 패킷들(RTT1, RTT2, RTT3, RTT4)을 보상 회로(1350)로 제공할 수 있다(동작 ①). 제 2 스토리지 장치(1400)의 어플리케이션 계층(1440)은 컨트롤러(1420)의 동작에 의해 생성된 정보에 기초하여, 2개의 데이터 쓰기 요청 패킷들(RTT5, RTT6)을 제 1 스토리지 장치(1300)로 제공할 수 있다(동작 ②).
버퍼(1353a)는 제 1 스토리지 장치(1300)에서의 패킷들 및 제 2 스토리지 장치(1400)로부터 수신되는 패킷들을 버퍼링할 수 있다. 예로서, 버퍼(1353a)는 6개의 데이터 쓰기 요청 패킷들(RTT1, RTT2, RTT3, RTT4, RTT5, RTT6)을 버퍼링할 수 있다(동작 ③). 그러나, 도 4a 내지 도 4c의 예에서, 연산 처리 장치(1100)는 최대 2개의 데이터 쓰기 요청 패킷들을 지원할 수 있다. 따라서, 연산 처리 장치(1100)는 버퍼링된 6개의 데이터 쓰기 요청 패킷들(RTT1, RTT2, RTT3, RTT4, RTT5, RTT6)을 동시에 처리하지 못할 수 있다.
따라서, 전송 스케줄러(1355a)는, 버퍼(1353a)에 버퍼링된 데이터 쓰기 요청 패킷들 중에서 연산 처리 장치(1100)로 제공되는 데이터 쓰기 요청 패킷들의 개수가 연산 처리 장치(1100)에 의해 최대로 지원되는 개수보다 크지 않도록, 버퍼(1353a)에 버퍼링된 데이터 쓰기 요청 패킷들의 연산 처리 장치(1100)로의 전송을 관리(예컨대, 스케줄링)할 수 있다. 예로서, 전송 스케줄러(1355a)는 특성 관리기(1351a)에 의해 관리되는 정보를 참조하여, 버퍼(1353a)가 데이터 쓰기 요청 패킷들(RTT1, RTT2, RTT3, RTT4, RTT5, RTT6) 중에서 최대 2개의 데이터 쓰기 요청 패킷들을 출력하도록 허용할 수 있다.
도 4b를 참조하면, 예로서, 제 1 스토리지 장치(1300)는 2개의 데이터 쓰기 요청 패킷들(RTT1, RTT5)을 연산 처리 장치(1100)로 제공할 수 있다(동작 ④). 따라서, 연산 처리 장치(1100)는 데이터 쓰기 요청 패킷들(RTT1, RTT5)을 처리할 수 있고, 버퍼(1353a)는 나머지 데이터 쓰기 요청 패킷들(RTT2, RTT3, RTT4, RTT6)을 버퍼링할 수 있다(동작 ⑤). 즉, 버퍼(1353a)는 출력된 데이터 쓰기 요청 패킷들을 제외한 일부분을 계속 버퍼링할 수 있다.
도 4b는 데이터 쓰기 요청 패킷들(RTT1, RTT5)이 연산 처리 장치(1100)로 제공되는 것을 보여준다. 그러나, 다른 예에서, 제 1 스토리지 장치(1300)는 데이터 쓰기 요청 패킷들(RTT1, RTT5) 대신, 데이터 쓰기 요청 패킷들(RTT2, RTT6)을 출력하거나 데이터 쓰기 요청 패킷들(RTT1, RTT2)을 출력할 수 있다. 데이터 쓰기 요청 패킷의 출력 및 버퍼링은 다양하게 변경 또는 수정될 수 있다.
예로서, 전송 스케줄러(1355a)는 높은 우선순위(Priority)를 갖는 데이터 쓰기 요청 패킷, 긴급한 전송을 요구하는 데이터 쓰기 요청 패킷, 또는 성능 향상을 가능하게 하는 데이터 쓰기 요청 패킷이 먼저 출력되도록 허용할 수 있다. 즉, 전송 스케줄러(1355a)는 연산 처리 장치(1100)로 제공되는 데이터 쓰기 요청 패킷들의 개수 및 순서를 관리할 수 있다.
도 4c를 참조하면, 연산 처리 장치(1100)는 데이터 쓰기 요청 패킷(RTT1)에 대응하는 쓰기 데이터 패킷(DAT1)을 출력할 수 있다. 제 1 스토리지 장치(1300)는 컨트롤러(1320) 및/또는 어플리케이션 계층(1340)에 의해 쓰기 데이터 패킷(DAT1)을 처리하여, 쓰기 데이터 패킷(DAT1)에 대응하는 쓰기 데이터를 불휘발성 메모리들(1310)에 저장할 수 있다(동작 ⑥).
연산 처리 장치(1100)가 데이터 쓰기 요청 패킷(RTT1)의 처리를 완료함에 따라, 연산 처리 장치(1100)는 1개의 데이터 쓰기 요청 패킷을 추가로 처리할 수 있다. 따라서, 쓰기 데이터 패킷(DAT1)에 응답하여, 전송 스케줄러(1355a)는 버퍼(1353a)에 버퍼링된 데이터 쓰기 요청 패킷(RTT2)이 출력되어 연산 처리 장치(1100)로 제공되도록 허용할 수 있다(동작 ⑦). 따라서, 연산 처리 장치(1100)는 아직 처리되지 않은 데이터 쓰기 요청 패킷(RTT5)에 더하여, 추가로 수신된 데이터 쓰기 요청 패킷(RTT2)을 처리할 수 있다. 버퍼(1353a)는 나머지 데이터 쓰기 요청 패킷들(RTT3, RTT4, RTT6)을 버퍼링할 수 있다(동작 ⑧).
요약하면, 제 1 스토리지 장치(1300)의 보상 회로(1350)는, 제 1 스토리지 장치(1300)로부터 연산 처리 장치(1100)로 제공되는 데이터 쓰기 요청 패킷들의 개수 및 제 2 스토리지 장치(1400)로부터 제 1 스토리지 장치(1300)를 통해 연산 처리 장치(1100)로 제공되는 데이터 쓰기 요청 패킷들의 개수의 합이 연산 처리 장치(1100)에 의해 최대로 지원되는 개수보다 크지 않도록, 보상 동작을 수행할 수 있다. 제 1 스토리지 장치(1300)에서의 데이터 쓰기 요청 패킷들의 개수와 제 2 스토리지 장치(1400)로부터 수신된 데이터 쓰기 요청 패킷들의 개수의 합이 연산 처리 장치(1100)에 의해 최대로 지원되는 개수보다 컸던 경우, 제 1 스토리지 장치(1300)는 연산 처리 장치(1100)로 제공된 데이터 쓰기 요청 패킷들을 제외한 일부분을 버퍼링할 수 있다. 연산 처리 장치(1100)에서 처리 중인 데이터 쓰기 요청 패킷들의 개수가 연산 처리 장치(1100)에 의해 최대로 지원되는 개수보다 작은 경우, 제 1 스토리지 장치(1300)는 버퍼링된 데이터 쓰기 요청 패킷을 연산 처리 장치(1100)로 추가로 제공할 수 있다. 버퍼(1353a)가 데이터 쓰기 요청 패킷들 모두를 출력한 경우, 보상 동작은 수행되지 않을 수 있다.
도 4a 내지 도 4c를 참조하여 설명된 데이터 쓰기 요청 패킷들의 개수는 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 데이터 쓰기 요청 패킷들의 개수는 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 각각의 목적, 성능, 및 요구에 의존하여 다양하게 변경 또는 수정될 수 있다.
다른 예로서, 연산 처리 장치(1100)가 최대 3개의 데이터 쓰기 요청 패킷들을 지원하는 경우, 전송 스케줄러(1355a)는 최대 3개의 데이터 쓰기 요청 패킷들이 출력되고 나머지 데이터 쓰기 요청 패킷들이 버퍼링되도록 버퍼(1353a)를 제어할 수 있다. 연산 처리 장치(1100)가 3개 미만의 데이터 쓰기 요청 패킷들을 처리 중인 경우, 전송 스케줄러(1355a)는 버퍼링된 데이터 쓰기 요청 패킷들 중 적어도 하나가 추가로 출력되도록 버퍼(1353a)를 제어할 수 있다.
도 4d를 참조하면, 몇몇 실시 예에서, 특성 관리기(1351a)는 데이터 쓰기 요청 패킷들의 최대 개수에 더하여, 데이터 쓰기 요청 패킷들의 제한 개수를 더 관리할 수 있다. 최대 개수는 하드웨어 설계/성능에 의존하여 물리적으로 허용되는 능력(Capability)과 관련될 수 있고, 제한 개수는 실제로 생성되도록 허용되는 데이터 쓰기 요청 패킷들의 개수의 상한과 관련될 수 있다. 제한 개수는 최대 개수와 달리, 예로서, 동작 정책, 사용자 요청 등에 의존하여 임의로 설정 또는 선택될 수 있다. 예로서, 제한 개수는 연산 처리 장치(1100)의 요청 및/또는 보상 회로(1350)의 판별에 따라 설정 또는 선택될 수 있다.
제 1 스토리지 장치(1300)에 의해 실제로 생성되는 데이터 쓰기 요청 패킷들의 제한 개수는 제 1 스토리지 장치(1300)에 의해 생성될 수 있는 데이터 쓰기 요청 패킷들의 최대 개수 이하일 수 있다. 제 2 스토리지 장치(1400)에 의해 실제로 생성되는 데이터 쓰기 요청 패킷들의 제한 개수는 제 2 스토리지 장치(1400)에 의해 생성될 수 있는 데이터 쓰기 요청 패킷들의 최대 개수 이하일 수 있다. 연산 처리 장치(1100)와 실제로 통신되는 데이터 쓰기 요청 패킷들의 제한 개수는 연산 처리 장치(1100)와 통신될 수 있는 데이터 쓰기 요청 패킷들의 최대 개수 이하일 수 있다.
예로서, 도 4d를 참조하면, 제 1 스토리지 장치(1300)가 최대 4개의 데이터 쓰기 요청 패킷들을 생성할 수 있더라도, 특성 관리기(1351a)는 보상 회로(1350)가 어플리케이션 계층(1340)으로부터 최대 2개의 데이터 쓰기 요청 패킷들을 수신하도록 제한 개수를 관리할 수 있다. 한편, 제 2 스토리지 장치(1400)가 최대 2개의 데이터 쓰기 요청 패킷들을 생성할 수 있는 경우, 특성 관리기(1351a)는 보상 회로(1350)가 제 2 스토리지 장치(1400)로부터 최대 2개의 데이터 쓰기 요청 패킷들을 수신하도록 제한 개수를 관리할 수 있다.
예로서, 연산 처리 장치(1100)가 최대 2개의 데이터 쓰기 요청 패킷들을 지원할 수 있더라도, 특성 관리기(1351a)는 보상 회로(1350)가 연산 처리 장치(1100)와 1개의 데이터 쓰기 요청 패킷을 교환하도록 제한 개수를 관리할 수 있다. 다만, 위 예들은 더 나은 이해를 돕기 위해 제공되고, 본 발명을 한정하기 위한 것은 아니다. 데이터 쓰기 요청 패킷들의 최대 개수 및 제한 개수는 다양하게 변경 또는 수정될 수 있다.
위 예들에서, 어플리케이션 계층(1340)은 컨트롤러(1320)의 동작에 의해 생성된 정보에 기초하여, 최대 2개의 데이터 쓰기 요청 패킷들(예컨대, RTT1, RTT2)을 보상 회로(1350)로 제공할 수 있다(동작 ①). 제 2 스토리지 장치(1400)의 어플리케이션 계층(1440)은 컨트롤러(1420)의 동작에 의해 생성된 정보에 기초하여, 최대 2개의 데이터 쓰기 요청 패킷들(예컨대, RTT3, RTT4)을 제 1 스토리지 장치(1300)로 제공할 수 있다(동작 ②).
버퍼(1353a)는 제 1 스토리지 장치(1300)에서의 패킷들 및 제 2 스토리지 장치(1400)로부터 수신되는 패킷들을 버퍼링할 수 있다. 예로서, 버퍼(1353a)는 4개의 데이터 쓰기 요청 패킷들(RTT1, RTT2, RTT3, RTT4)을 버퍼링할 수 있다(동작 ③). 전송 스케줄러(1355a)는 특성 관리기(1351a)에 의해 관리되는 정보(예컨대, 제한 개수)를 참조하여, 버퍼(1353a)가 데이터 쓰기 요청 패킷들(RTT1, RTT2, RTT3, RTT4) 중에서 최대 1개의 데이터 쓰기 요청 패킷을 출력하도록 허용할 수 있다. 버퍼(1353a)로부터 출력되는 데이터 쓰기 요청 패킷은 연산 처리 장치(1100)로 전송될 수 있고, 연산 처리 장치(1100)는 최대 1개의 데이터 쓰기 요청 패킷을 처리할 수 있다.
도 5a 내지 도 5c는 패킷의 데이터 부분의 재구성을 처리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도들이다. 몇몇 실시 예에서, 제 1 스토리지 장치(1300)의 보상 회로(1350)는 특성 관리기(1351b), 버퍼(1353b), 및 패킷 재구성기(1355b)를 포함할 수 있다.
도 5a를 참조하면, 특성 관리기(1351b)는 연산 처리 장치(1100)에 관한 제 1 특성, 제 1 스토리지 장치(1300)에 관한 제 2 특성, 및 제 2 스토리지 장치(1400)에 관한 제 3 특성을 관리할 수 있다. 특성 관리기(1351b)는 도 4a의 특성 관리기(1351a)와 실질적으로 동일 또는 유사하게 구성되고 동작할 수 있다.
도 5a 내지 도 5c의 예에서, 제 1 특성은 연산 처리 장치(1100)에 의해 처리되는 패킷에서 하나의 헤더 부분에 대응하는 데이터 부분의 단위 크기와 관련될 수 있다. 제 2 특성은 제 1 스토리지 장치(1300)에 의해 처리되는 패킷에서 하나의 헤더 부분에 대응하는 데이터 부분의 단위 크기와 관련될 수 있고, 제 3 특성은 제 2 스토리지 장치(1400)에 의해 처리되는 패킷에서 하나의 헤더 부분에 대응하는 데이터 부분의 단위 크기와 관련될 수 있다.
패킷은 전달될 정보를 포함하는 데이터 부분을 포함할 수 있다. 패킷은 데이터 부분의 크기, 목적지, 내용 등의 특징을 설명하는 헤더 부분을 포함할 수 있다. 하나의 헤더 부분은 하나의 데이터 부분에 대응할 수 있다.
더 나은 이해를 돕기 위한 예로서, 연산 처리 장치(1100)는 4kB의 데이터 부분을 포함하는 패킷을 처리할 수 있다. 나아가, 제 1 스토리지 장치(1300)는 16kB의 데이터 부분을 포함하는 패킷을 처리할 수 있고, 제 2 스토리지 장치(1400)는 2kB의 데이터 부분을 포함하는 패킷을 처리할 수 있다.
어플리케이션 계층(1340)은 컨트롤러(1320)의 동작에 의해 생성된 정보에 기초하여, 패킷(PCK1)을 보상 회로(1350)로 제공할 수 있다. 제 2 스토리지 장치(1400)의 어플리케이션 계층(1440)은 컨트롤러(1420)의 동작에 의해 생성된 정보에 기초하여, 패킷(PCK2)을 제 1 스토리지 장치(1300)로 제공할 수 있다.
버퍼(1353b)는 제 1 스토리지 장치(1300)에서의 패킷 및 제 2 스토리지 장치(1400)로부터 수신되는 패킷을 버퍼링할 수 있다. 예로서, 버퍼(1353b)는 패킷들(PCK1, PCK2)을 버퍼링할 수 있다. 패킷(PCK1)은 16kB의 데이터 부분 및 대응하는 헤더 부분을 포함할 수 있고, 패킷(PCK2)은 2kB의 데이터 부분 및 대응하는 헤더 부분을 포함할 수 있다. 그러나, 연산 처리 장치(1100)는 4kB의 데이터 부분을 포함하는 패킷을 처리할 수 있기 때문에, 패킷들(PCK1, PCK2)을 처리하지 못할 수 있다.
따라서, 패킷 재구성기(1355b)는 연산 처리 장치(1100)에 의해 처리되지 못하는 패킷을 재구성하여, 연산 처리 장치(1100)에 의해 처리될 수 있는 패킷을 생성할 수 있다. 패킷 재구성기(1355b)는 특성 관리기(1351b)에 의해 관리되는 정보를 참조하여 동작할 수 있다.
예로서, 패킷 재구성기(1355b)는, 패킷들(PCK1, PCK2) 중 적어도 하나에서 하나의 헤더 부분에 대응하는 데이터 부분이 연산 처리 장치(1100)에 의해 처리될 수 있는 단위 크기를 갖도록, 패킷들(PCK1, PCK2) 중 적어도 하나의 데이터 부분 및 대응하는 헤더 부분을 재구성할 수 있다. 패킷 재구성기(1355b)의 동작에 따라, 연산 처리 장치(1100)는 연산 처리 장치(1100)에 의해 처리될 수 있는 단위 크기를 갖는 데이터 부분 및 대응하는 헤더 부분을 포함하는 패킷(PCK3)을 수신할 수 있다.
예로서, 패킷(PCK1)에 포함되는 데이터 부분의 단위 크기(즉, 16kB)는 패킷(PCK3)을 위한 단위 크기(즉, 4kB)보다 클 수 있다. 도 5b를 참조하면, 패킷(PCK1)은 데이터 부분(D1) 및 대응하는 헤더 부분(H1)을 포함할 수 있다. 패킷 재구성기(1355b)는 데이터 부분(D1)을 복수의 새로운 데이터 부분(D3[1], D3[2], D3[3], D3[4])으로 분할할 수 있다. 새로운 데이터 부분들(D3[1], D3[2], D3[3], D3[4]) 각각은 패킷(PCK3)을 위한 단위 크기를 가질 수 있다.
패킷 재구성기(1355b)는 새로운 데이터 부분들(D3[1], D3[2], D3[3], D3[4])에 각각 대응하는 복수의 새로운 헤더 부분(H3[1], H3[2], H3[3], H3[4])을 생성할 수 있다. 패킷 재구성기(1355b)는 새로운 데이터 부분들(D3[1], D3[2], D3[3], D3[4]) 중 하나와 새로운 헤더 부분들(H3[1], H3[2], H3[3], H3[4]) 중 대응하는 하나를 결합하여 재구성된 패킷을 생성할 수 있다. 따라서, 패킷 재구성기(1355b)는 복수의 재구성된 패킷을 생성할 수 있다. 버퍼(1353b)는 재구성된 패킷들이 생성되는 동안 중간 결과들을 임시로 버퍼링할 수 있다.
이러한 보상 동작에 따라, 패킷(PCK3)은 재구성된 패킷들로 구성될 수 있다. 재구성된 패킷들 각각은 연산 처리 장치(1100)에 의해 처리될 수 있는 단위 크기를 갖는 데이터 부분을 포함할 수 있다. 패킷(PCK3)은 재구성된 패킷들에 기초하여 연산 처리 장치(1100)로 제공될 수 있다.
도 5c를 참조하면, 패킷(PCK2)은 데이터 부분(D2[1]) 및 대응하는 헤더 부분(H2[1])을 포함할 수 있다. 그러나, 패킷(PCK2)에 포함되는 데이터 부분의 단위 크기(즉, 2kB)는 패킷(PCK3)을 위한 단위 크기(즉, 4kB)보다 작을 수 있다. 따라서, 패킷 재구성기(1355b)의 동작에 따라, 버퍼(1353b)는 패킷(PCK2) 및 패킷(PCK2)을 뒤잇는 하나 이상의 패킷들의 데이터 부분들이 패킷(PCK3)을 위한 데이터 부분의 단위 크기만큼 누적될 때까지 패킷(PCK2) 및 뒤잇는 패킷(들)을 버퍼링할 수 있다.
예로서, 제 1 스토리지 장치(1300)는 패킷(PCK2)을 뒤이어 패킷(PCK2')을 제 2 스토리지 장치(1400)로부터 수신할 수 있다. 패킷(PCK2')은 데이터 부분(D2[2]) 및 대응하는 헤더 부분(H2[2])을 포함할 수 있다. 데이터 부분들(D2[1], D2[2])이 패킷(PCK3)을 위한 데이터 부분의 단위 크기만큼 누적되었기 때문에, 패킷 재구성기(1355b)는 데이터 부분들(D2[1], D2[2])을 하나의 데이터 부분(D3)으로 결합할 수 있다. 나아가, 패킷 재구성기(1355b)는 데이터 부분(D3)에 대응하는 새로운 헤더 부분(H3)을 생성할 수 있다.
이러한 보상 동작에 따라, 패킷(PCK3)은 데이터 부분(D3) 및 새로운 헤더 부분(H3)을 포함하도록 재구성될 수 있다. 데이터 부분(D3)은 패킷(PCK3)을 위한 단위 크기를 가질 수 있다. 따라서, 패킷(PCK3)은 연산 처리 장치(1100)로 제공되어, 연산 처리 장치(1100)에서 처리될 수 있다. 버퍼(1353b)는 재구성된 패킷(PCK3)이 생성되는 동안 중간 결과들을 임시로 버퍼링할 수 있다.
도 5a 내지 도 5c를 참조하여 설명된 단위 크기들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 데이터 부분의 단위 크기는 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 각각의 목적, 성능, 및 요구에 의존하여 다양하게 변경 또는 수정될 수 있다. 몇몇 경우, 제 1 스토리지 장치(1300) 또는 제 2 스토리지 장치(1400)와 관련되는 데이터 부분의 단위 크기가 연산 처리 장치(1100)와 관련되는 데이터 부분의 단위 크기와 동일한 경우, 보상 동작은 수행되지 않을 수 있다.
반대로, 연산 처리 장치(1100)로부터 수신되는 패킷의 데이터 부분이 제 1 스토리지 장치(1300) 또는 제 2 스토리지 장치(1400)에서 처리되지 못하는 단위 크기를 가질 수 있다. 이러한 경우, 보상 회로(1350)는 패킷 재구성기(1355b)의 동작에 따라, 제 1 스토리지 장치(1300) 또는 제 2 스토리지 장치(1400)를 위해, 연산 처리 장치(1100)로부터 수신되는 패킷을 재구성할 수 있다.
도 6은 도 3의 스토리지 장치들에 포함되는 메모리 영역들의 식별 번호들의 맵핑을 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도이다. 몇몇 실시 예에서, 제 1 스토리지 장치(1300)의 보상 회로(1350)는 특성 관리기(1351c) 및 LUN(Logical Unit Number) 맵퍼(1355c)를 포함할 수 있다.
제 1 스토리지 장치(1300)의 불휘발성 메모리들(1310) 및 제 2 스토리지 장치(1400)의 불휘발성 메모리들(1410)은 상이한 식별 번호들(예컨대, LUN들)에 기초하여 관리되는 복수의 메모리 영역을 포함할 수 있다. 예로서, 불휘발성 메모리들(1310)에 포함되는 메모리 영역들은 식별 번호들(ELUN0, ELUN1, ELUN2, ELUN3)에 기초하여 구별되고 관리될 수 있고, 불휘발성 메모리들(1410)에 포함되는 메모리 영역들은 식별 번호들(CLUN0, CLUN1)에 기초하여 구별되고 관리될 수 있다. 메모리 영역들은 스토리지 시스템(1000)의 정책, 연산 처리 장치(1100)의 요청 등 다양한 요인에 따라 구별될 수 있다.
몇몇 경우, 연산 처리 장치(1100)는 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400)에 포함되는 메모리 영역들을 식별 번호들(LUN0, LUN1, LUN2, LUN3, LUN4, LUN5)에 기초하여 구별할 수 있다. 즉, 연산 처리 장치(1100)에 의해 관리되는 식별 번호들은 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치에 의해 관리되는 식별 번호들과 상이할 수 있다. 따라서, 보상 회로(1350)는 연산 처리 장치(1100)에 의해 관리되는 식별 번호들과 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치에 의해 관리되는 식별 번호들 사이의 차이를 보상할 수 있다.
특성 관리기(1351c)는 연산 처리 장치(1100)에 관한 제 1 특성, 제 1 스토리지 장치(1300)에 관한 제 2 특성, 및 제 2 스토리지 장치(1400)에 관한 제 3 특성을 관리할 수 있다. 특성 관리기(1351c)는 도 4a의 특성 관리기(1351a)와 실질적으로 동일 또는 유사하게 구성되고 동작할 수 있다.
도 6의 예에서, 제 1 특성은 연산 처리 장치(1100)에 의해 관리되는 식별 번호들(LUN0, LUN1, LUN2, LUN3, LUN4, LUN5)과 관련될 수 있다. 제 2 특성은 제 1 스토리지 장치(1300)에 의해 관리되는 식별 번호들(ELUN0, ELUN1, ELUN2, ELUN3)과 관련될 수 있고, 제 3 특성은 제 2 스토리지 장치(1400)에 의해 관리되는 식별 번호들(CLUN0, CLUN1)과 관련될 수 있다.
특성 관리기(1351c)는 식별 번호들 사이의 대응 관계(CR)를 더 관리할 수 있다. LUN 맵퍼(1355c)는 특성 관리기(1351c)에 의해 관리되는 대응 관계(CR)에 기초하여, 식별 번호들(LUN0, LUN1, LUN2, LUN3, LUN4, LUN5)과 식별 번호들(ELUN0, ELUN1, ELUN2, ELUN3, CLUN0, CLUN1)을 각각 서로 맵핑할 수 있다.
연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 사이에서 통신되는 패킷은 (예로서, 헤더 부분에) 식별 번호의 정보를 포함할 수 있다. 패킷은 그 식별 번호에 의해 지시되는 메모리 영역과 관련하여 처리될 수 있다.
예로서, 제 1 스토리지 장치(1300)가 연산 처리 장치(1100)로부터 식별 번호들(LUN0, LUN1, LUN2, LUN3) 중 하나를 지시하는 패킷을 수신하는 경우, LUN 맵퍼(1355c)는 대응 관계(CR)를 참조하여, 수신된 패킷의 식별 번호를 식별 번호들(ELUN0, ELUN1, ELUN2, ELUN3) 중 대응하는 하나로 맵핑할 수 있다. 이러한 보상 동작에 따라, 수신된 패킷은 불휘발성 메모리들(1310)에서, 맵핑된 식별 번호를 갖는 메모리 영역과 관련하여 처리될 수 있다.
예로서, 제 1 스토리지 장치(1300)가 연산 처리 장치(1100)로부터 식별 번호들(LUN4, LUN5) 중 하나를 지시하는 패킷을 수신하는 경우, LUN 맵퍼(1355c)는 대응 관계(CR)를 참조하여, 수신된 패킷의 식별 번호를 식별 번호들(CLUN0, CLUN1) 중 대응하는 하나로 맵핑할 수 있다. 이러한 보상 동작에 따라, 수신된 패킷은 제 2 스토리지 장치(1400)로 전달될 수 있다. 전달된 패킷은 불휘발성 메모리들(1410)에서, 맵핑된 식별 번호를 갖는 메모리 영역과 관련하여 처리될 수 있다.
반대로, LUN 맵퍼(1355c)는 대응 관계(CR)를 참조하여, 제 1 스토리지 장치(1300)에서의 패킷 또는 제 2 스토리지 장치(1400)로부터 수신되는 패킷의 식별 번호를 연산 처리 장치(1100)에 의해 관리되는 식별 번호로 맵핑할 수 있다. 맵핑된 식별 번호를 갖는 패킷은 연산 처리 장치(1100)로 제공될 수 있다. 연산 처리 장치(1100)는 맵핑된 식별 번호에 기초하여, 어느 메모리 영역과 관련하여 패킷이 처리되었는지 판별할 수 있다.
도 6을 참조하여 설명된 식별 번호들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 식별 번호들의 개수(즉, 메모리 영역들의 개수) 및 대응 관계(CR)는 정책 및 구성에 의존하여 다양하게 변경 또는 수정될 수 있다.
도 7a 및 도 7b는 패킷들의 데이터 순서(Sequence)의 정렬(Ordering)을 처리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도들이다. 몇몇 실시 예에서, 제 1 스토리지 장치(1300)의 보상 회로(1350)는 특성 관리기(1351d), 버퍼(1353d), 및 순서 배열기(1355d)를 포함할 수 있다.
도 7a를 참조하면, 특성 관리기(1351d)는 연산 처리 장치(1100)에 관한 제 1 특성, 제 1 스토리지 장치(1300)에 관한 제 2 특성, 및 제 2 스토리지 장치(1400)에 관한 제 3 특성을 관리할 수 있다. 특성 관리기(1351d)는 도 4a의 특성 관리기(1351a)와 실질적으로 동일 또는 유사하게 구성되고 동작할 수 있다.
도 7a 내지 도 7b의 예에서, 제 1 특성은 연산 처리 장치(1100)가 인-오더(In-order) 순서의 데이터로 형성되는 패킷들을 처리할 수 있음을 나타낼 수 있다. 제 2 특성은 제 1 스토리지 장치(1300)로부터 출력되는 패킷들의 데이터의 순서가 아웃-오브-오더(Out-of-order)임을 나타낼 수 있고, 제 3 특성은 제 2 스토리지 장치(1400)로부터 출력되는 패킷들의 데이터의 순서가 아웃-오브-오더임을 나타낼 수 있다.
예로서, 제 1 스토리지 장치(1300)는 불휘발성 메모리들(1310)에 저장된 데이터(A, B, C, D)를 연산 처리 장치(1100)로 출력하고자 할 수 있다. 예로서, 데이터(A, B, C, D)는 "A-B-C-D"의 순서를 가질 수 있다. 어플리케이션 계층(1340)은 컨트롤러(1320)를 통해 읽힌 데이터(A, B, C, D)에 기초하여, 패킷(PCK1)을 보상 회로(1350)로 제공할 수 있다. 버퍼(1353d)는 패킷(PCK1)을 버퍼링할 수 있다.
예로서, 제 2 스토리지 장치(1400)는 불휘발성 메모리들(1410)에 저장된 데이터(E, F, G, H)를 연산 처리 장치(1100)로 전달하고자 할 수 있다. 예로서, 데이터(E, F, G, H)는 "E-F-G-H"의 순서를 가질 수 있다. 어플리케이션 계층(1440)은 컨트롤러(1420)를 통해 읽힌 데이터(E, F, G, H)에 기초하여, 패킷(PCK2)을 제 1 스토리지 장치(1300)로 제공할 수 있다. 버퍼(1353d)는 패킷(PCK2)을 버퍼링할 수 있다.
그러나, 몇몇 경우, 패킷(PCK1) 및 패킷(PCK2)과 관련되는 데이터는 아웃-오브-오더 순서를 가질 수 있다. 도 7b를 함께 참조하면, 예로서, 패킷(PCK1)과 관련되는 데이터는 "C-B-A-D"의 순서를 가질 수 있고, 패킷(PCK2)과 관련되는 데이터는 "F-H-E-G"의 순서를 가질 수 있다. 몇몇 경우, 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400)는 데이터 전송의 성능, 효율성 등의 요인들을 고려하여, 원래 의도된 인-오더 순서와 상이한 아웃-오브-오더 순서에 따라 패킷들(PCK1, PCK2)을 생성할 수 있다.
한편, 몇몇 경우, 연산 처리 장치(1100)는 (예컨대, 성능 및 설계 상의 한계 때문에) 아웃-오브-오더 순서의 데이터를 처리하지 못할 수 있다. 이 경우, 연산 처리 장치(1100)는 패킷들(PCK1, PCK2)을 처리하지 못할 수 있다.
따라서, 특성 관리기(1351d)에 의해 관리되는 정보를 참조하여, 순서 배열기(1355d)는 패킷들(PCK1, PCK2)과 관련되는 데이터의 아웃-오브-오더 순서를 인-오더 순서로 정렬할 수 있다. 예로서, 순서 배열기(1355d)는 패킷(PCK1)의 헤더 부분을 참조하여, 패킷(PCK1)과 관련되는 데이터를 "A-B-C-D"의 순서로 정렬할 수 있다. 예로서, 순서 배열기(1355d)는 패킷(PCK2)의 헤더 부분을 참조하여, 패킷(PCK2)과 관련되는 데이터를 "E-F-G-H"의 순서로 정렬할 수 있다. 버퍼(1353d)는 데이터 순서가 정렬되는 동안 중간 결과들을 임시로 버퍼링할 수 있다.
이러한 보상 동작에 따라, 순서 배열기(1355d)는 패킷(PCK3)을 생성할 수 있다. 패킷(PCK3)과 관련되는 데이터는 인-오더 순서를 가질 수 있다. 따라서, 패킷(PCK3)은 연산 처리 장치(1100)로 제공될 수 있고, 연산 처리 장치(1100)에서 처리될 수 있다.
도 7a 내지 도 7b를 참조하여 설명된 데이터 순서, 인-오더 순서, 및 아웃-오브-오더 순서는 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 다른 예에서, 제 1 스토리지 장치(1300) 또는 제 2 스토리지 장치(1400)는 인-오더 순서에 따라 패킷들을 출력할 수 있고, 연산 처리 장치(1100)는 아웃-오브-오더 순서의 패킷들을 처리할 수 있다. 이러한 예에서, 반대로, 보상 회로(1350)는 순서 배열기(1355d)의 동작에 따라, 제 1 스토리지 장치(1300) 또는 제 2 스토리지 장치(1400)를 위해, 연산 처리 장치(1100)로부터 수신되는 패킷들의 데이터의 순서를 정렬할 수 있다. 몇몇 경우, 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400) 사이에서 데이터 순서가 충돌되지 않는 경우, 보상 동작은 수행되지 않을 수 있다.
도 8은 도 3의 스토리지 장치들 각각의 처리율(Throughput)에 따라 패킷 분배를 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도이다. 몇몇 실시 예에서, 제 1 스토리지 장치(1300)의 보상 회로(1350)는 처리율 관리기(1351e), 버퍼(1353e), 및 분배 스케줄러(1355e)를 포함할 수 있다.
몇몇 경우, 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400)는 동시에 동작할 수 있다. 예로서, 연산 처리 장치(1100)는 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400) 모두에 데이터를 저장하고자 할 수 있다.
한편, 제 1 스토리지 장치(1300)의 처리율은 제 2 스토리지 장치(1400)의 처리율과 상이할 수 있다. 예로서, 제 1 스토리지 장치(1300)는 상대적으로 많은 양의 데이터를 저장할 것을 요청받았을 수 있고, 제 2 스토리지 장치(1400)는 상대적으로 적은 양의 데이터를 저장할 것을 요청받았을 수 있다. 예로서, 제 1 스토리지 장치(1300)의 처리 대역폭이 제 2 스토리지 장치(1400)의 처리 대역폭보다 높을 수 있다. 이러한 예들에서, 도 8을 참조하면, 제 1 스토리지 장치(1300)의 처리율은 제 2 스토리지 장치(1400)의 처리율보다 높을 수 있다.
처리율 관리기(1351e)는 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400) 각각의 처리율에 관한 정보를 관리할 수 있다. 예로서, 처리율 관리기(1351e)는 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400) 각각의 장치 정보에 기초하여, 처리율 정보를 수집할 수 있다. 예로서, 처리율 관리기(1351e)는 선로를 통해 전송되는 패킷들의 양을 모니터링하여, 처리율 정보를 수집할 수 있다. 다만, 이 예들은 본 발명을 한정하기 위한 것은 아니다.
버퍼(1353e)는 연산 처리 장치(1100)로부터 수신되는 패킷들을 버퍼링할 수 있다. 버퍼링된 패킷들은 제 1 스토리지 장치(1300)에서 처리되거나 제 2 스토리지 장치(1400)로 전달될 수 있다.
한편, 제 1 스토리지 장치(1300)의 처리율이 제 2 스토리지 장치(1400)의 처리율보다 높은 경우, 패킷들을 제 2 스토리지 장치(1400)로 전달하는 것보다 더 자주 패킷들을 제 1 스토리지 장치(1300)에서 처리하는 것이 효율적일 수 있다. 따라서, 분배 스케줄러(1355e)는 처리율 관리기(1351e)에 의해 관리되는 정보를 참조하여, 버퍼(1353e)에 버퍼링된 패킷들이 제 2 스토리지 장치(1400)로 전달되는 것보다 더 자주 컨트롤러(1320)(및/또는 어플리케이션 계층(1340))에 의해 처리되도록, 패킷들의 분배를 관리(예컨대, 스케줄링)할 수 있다.
몇몇 경우, 도 8에 나타낸 것과 달리, 제 2 스토리지 장치(1400)의 처리율이 제 1 스토리지 장치(1300)의 처리율보다 높을 수 있다. 이 경우, 분배 스케줄러(1355e)의 동작에 따라, 버퍼(1353e)에 버퍼링된 패킷들은 제 1 스토리지 장치(1300)에서 처리되는 것보다 더 자주 제 2 스토리지 장치(1400)로 전달될 수 있다. 이러한 보상 동작에 따라, 스토리지 시스템(1000)의 성능이 향상될 수 있다.
반대로, 연산 처리 장치(1100)는 제 1 스토리지 장치(1300) 및 제 2 스토리지 장치(1400) 모두로부터 데이터를 읽고자 할 수 있다. 이 경우, 분배 스케줄러(1355e)의 동작에 따라, 제 1 스토리지 장치(1300)에서의 패킷들이 제 2 스토리지 장치(1400)로부터의 패킷들보다 더 자주 연산 처리 장치(1100)로 제공되거나, 제 2 스토리지 장치(1400)로부터의 패킷들이 제 1 스토리지 장치(1300)에서의 패킷들보다 더 자주 연산 처리 장치(1100)로 제공될 수 있다.
도 9는 패킷의 처리에 관한 우선순위에 따라 패킷 분배를 관리하기 위한 도 3의 제 1 스토리지 장치의 예시적인 구성 및 동작을 설명하기 위한 개념도이다. 몇몇 실시 예에서, 제 1 스토리지 장치(1300)의 보상 회로(1350)는 버퍼(1351f), 우선순위 판별기(1353f), 및 분배 스케줄러(1355f)를 포함할 수 있다.
연산 처리 장치(1100)는 제 1 스토리지 장치(1300)를 위한 패킷(PCK1)을 제 1 스토리지 장치(1300)로 전송할 수 있다(동작 ①). 연산 처리 장치(1100)는 제 2 스토리지 장치(1400)를 위한 패킷(PCK2)을 제 1 스토리지 장치(1300)로 전송할 수 있다(동작 ②). 예로서, 패킷(PCK1)이 패킷(PCK2)보다 먼저 전송될 수 있다.
버퍼(1351f)는 연산 처리 장치(1100)로부터 수신되는 패킷들을 버퍼링할 수 있다. 예로서, 버퍼(1351f)는 처음으로 수신된 패킷(PCK1)을 버퍼링할 수 있고, 그 뒤 두 번째로 수신된 패킷(PCK2)을 더 버퍼링할 수 있다(동작 ③).
한편, 몇몇 경우, 우선순위가 패킷들(PCK1, PCK2) 각각에 할당될 수 있다. 예로서, 좀 더 높은 우선순위는 긴급하게 처리될 것을 요청받은 패킷, 메타데이터와 관련되는 패킷, 시스템 관리(예컨대, 성능, 수명 등)와 관련되는 패킷 등에 할당될 수 있다. 우선순위에 관한 정보는 패킷의 헤더 부분에 포함될 수 있다.
우선순위 판별기(1353f)는 버퍼(1351f)에 버퍼링된 패킷의 헤더 부분을 참조하여, 버퍼(1351f)에 버퍼링된 패킷의 우선순위를 판별할 수 있다. 분배 스케줄러(1355f)는 우선순위 판별기(1353f)의 판별 결과에 기초하여, 패킷을 분배하는 순서를 관리(예컨대, 스케줄링)할 수 있다. 분배 스케줄러(1355f)는 패킷들의 수신 순서에 관계없이, 더 높은 우선순위를 갖는 패킷을 더 먼저 분배할 수 있다.
예로서, 패킷(PCK1)에 낮은 우선순위가 할당될 수 있고, 패킷(PCK2)에 높은 우선순위가 할당될 수 있다. 이 예에서, 패킷(PCK1)이 패킷(PCK2)보다 먼저 수신되었음에도 불구하고, 분배 스케줄러(1355f)는 패킷(PCK2)이 패킷(PCK1)보다 먼저 분배되도록 버퍼(1351f)를 제어할 수 있다. 따라서, 더 높은 우선순위를 갖는 패킷(PCK2)이 먼저 제 2 스토리지 장치(1400)로 전달될 수 있다. 그 뒤, 더 낮은 우선순위를 갖는 패킷(PCK1)이 컨트롤러(1320)(및/또는 어플리케이션 계층(1340))에 의해 처리될 수 있다.
몇몇 경우, 도 9에 나타낸 것과 달리, 패킷(PCK1)의 우선순위가 패킷(PCK2)의 우선순위보다 높을 수 있다. 이 경우, 분배 스케줄러(1355f)의 동작에 따라, 패킷(PCK1)이 먼저 제 1 스토리지 장치(1300)에서 처리될 수 있다. 그 뒤, 패킷(PCK2)이 제 2 스토리지 장치(1400)로 전달될 수 있다. 이러한 보상 동작에 따라, 스토리지 시스템(1000)의 QoS(Quality of Service)가 향상될 수 있다.
반대로, 버퍼(1351f)는 제 1 스토리지 장치(1300)에서의 패킷 및 제 2 스토리지 장치(1400)로부터 수신되는 패킷을 버퍼링할 수 있고, 제 1 스토리지 장치(1300)는 버퍼링된 패킷들을 연산 처리 장치(1100)로 제공하고자 할 수 있다. 이 경우, 분배 스케줄러(1355f)의 동작에 따라, 제 1 스토리지 장치(1300)는 제 1 스토리지 장치(1300)에서의 패킷 및 제 2 스토리지 장치(1400)로부터 수신되는 패킷 중에서 더 높은 우선순위를 갖는 패킷을 먼저 연산 처리 장치(1100)로 제공할 수 있다.
다양한 보상 동작이 도 4a 내지 도 9를 참조하여 설명되었다. 그러나, 보상 회로(1350)는 연산 처리 장치(1100), 제 1 스토리지 장치(1300), 및 제 2 스토리지 장치(1400)의 상이한 특성들을 보상하기 위해, 다른 종류의 보상 동작들을 더 수행할 수 있다. 도 4a 내지 도 9는 본 발명을 한정하기 위한 것은 아니다.
몇몇 경우, 보상 회로(1350)의 동작에 따라, 패킷이 제 1 스토리지 장치(1300)와 제 2 스토리지 장치(1400) 사이에서 교환될 수 있다. 몇몇 경우, 제 1 스토리지 장치(1300)와 제 2 스토리지 장치(1400) 사이에서 패킷을 교환하기 위해, 컨트롤러(1320) 및/또는 어플리케이션 계층(1340)이 패킷 처리에 관여할 수 있다.
도 10은 도 3의 제 2 스토리지 장치의 예시적인 구성을 보여주는 블록도이다.
도 1 내지 도 9를 참조하여 설명된 스토리지 시스템(1000)은 직렬로 연결되는 두 개의 스토리지 장치들(1300, 1400)을 포함할 수 있다. 그러나, 몇몇 실시 예에서, 스토리지 시스템(1000)은 직렬로 연결되는 세 개 이상의 스토리지 장치들을 포함할 수 있다(도 11 참조). 이러한 실시 예들에서, 도 3의 제 2 스토리지 장치(1400)는 도 10의 제 2 스토리지 장치(1400b)를 포함할 수 있다.
제 2 스토리지 장치(1400b)는 불휘발성 메모리들(1410), 컨트롤러(1420), 인터커넥트 계층(1430), 및 어플리케이션 계층(1440)에 더하여, 인터커넥트 계층(1430b) 및 보상 회로(1450)을 포함할 수 있다. 인터커넥트 계층(1430b)은, 도 3의 인터커넥트 계층(1330b)과 유사하게, 포트(PORT2b)를 통해 데이터/신호/패킷을 송신/수신할 수 있다. 포트(PORT2b)는 연산 처리 장치(1100) 및 제 1 스토리지 장치(1300)와 직접 연결되지 않는 다른 스토리지 장치에 직접 연결될 수 있다.
보상 회로(1450)는, 도 3의 보상 회로(1350)와 유사하게, 다양한 보상 동작을 수행할 수 있다. 보상 회로(1450)는 포트(PORT2)를 통해 연결되는 제 1 스토리지 장치(1300), 포트(PORT2b)를 통해 연결되는 다른 스토리지 장치, 및 제 2 스토리지 장치(1400)의 상이한 특성들을 보상하기 위해, 도 4a 내지 도 9를 참조하여 설명된 보상 동작들 및 그 외 다른 보상 동작들을 수행할 수 있다.
도 11은 본 발명의 실시 예에 따라 직렬로 연결되는 전자 장치들을 포함하는 전자 시스템을 보여주는 블록도이다. 도 12a 및 도 12b는 도 11의 전자 시스템에서 연산 처리 장치에 직접 연결되지 않는 전자 장치와 통신하는 예시적인 과정들을 설명하기 위한 개념도들이다.
도 11을 참조하면, 전자 시스템(4000)은 연산 처리 장치(4100), 및 연산 처리 장치(4100)에 직렬로 연결되는 복수의 전자 장치(4300, 4400, 4800, 4900)를 포함할 수 있다. 연산 처리 장치(4100)는 도 1 내지 도 10을 참조하여 설명된 연산 처리 장치들(1100, 2100, 3100) 중 하나에 대응할 수 있다.
전자 시스템(4000)은 다양한 유형의 전자 시스템들 중 하나일 수 있다. 예로서, 전자 시스템(4000)은 도 1 내지 도 10을 참조하여 설명된 스토리지 시스템(1000), 전자 장치(2000), 또는 컴퓨팅 시스템(3000)에 대응할 수 있다. 예로서, 복수의 전자 장치(4300, 4400, 4800, 4900) 각각은 도 1 내지 도 10을 참조하여 설명된 스토리지 장치들(1300, 1400, 1400b, 2300, 2400, 3300a, 3300b, 3300c, 3400a, 3400b, 3400c) 중 하나에 대응할 수 있다.
그러나, 본 발명은 위 예들에 의해 한정되지 않는다. 예로서, 전자 장치들(4300, 4400, 4800, 4900) 각각은 그래픽 처리 장치, 유선/무선 통신 장치, 디스플레이 장치 등 어떠한 유형의 전자 장치든 포함할 수 있다. 전자 시스템(4000)의 용도는 전자 장치들(4300, 4400, 4800, 4900) 각각의 유형에 의존하여 다양하게 변경될 수 있다.
전자 장치들(4300, 4400, 4800, 4900)은 각각의 입출력 포트들을 통해 서로 직렬로 연결될 수 있다. 제 1 전자 장치(4300)는 직렬 연결의 가장 끝(Tail End)에 놓일 수 있다. 제 2 전자 장치(4400)는 제 1 전자 장치(4300)와 직접 통신하도록 연결될 수 있다. 이러한 방식으로, 전자 장치들(4300, 4400, 4800, 4900)은 체인 구조 또는 데이지 체인 구조의 토폴로지로 연결될 수 있다.
연산 처리 장치(4100)는 제 1 전자 장치(4300)와 직접 통신하도록 연결될 수 있다. 반면, 연산 처리 장치(4100)는 다른 전자 장치들(4400, 4800, 4900)과 직접 연결되지 않을 수 있다. 연산 처리 장치(4100)가 직접 연결되지 않은 대상 전자 장치와 통신하고자 하는 경우, 연산 처리 장치(4100)는 중간의(Intermediate) 전자 장치(들)를 통해 대상 전자 장치와 통신할 수 있다.
예로서, 도 12a를 참조하면, 연산 처리 장치(4100)가 제 2 전자 장치(4400)와 통신하고자 하는 경우, 연산 처리 장치(4100)는 제 1 전자 장치(4300)를 통해 제 2 전자 장치(4400)와 통신할 수 있다. 이 경우, 제 1 전자 장치(4300)는 연산 처리 장치(4100), 제 1 전자 장치(4300), 및 제 2 전자 장치(4400)의 상이한 특성들을 보상하기 위해 다양한 보상 동작을 수행할 수 있다.
예로서, 도 12b를 참조하면, 연산 처리 장치(4100)가 제 N 전자 장치(4900)와 통신하고자 하는 경우, 연산 처리 장치(4100)는 제 1 전자 장치(4300) 내지 제 (N-1) 전자 장치(4800)를 통해 제 N 전자 장치(4900)와 통신할 수 있다. 이 경우, 제 1 전자 장치(4300) 내지 제 (N-1) 전자 장치(4800) 중 적어도 하나는 전자 시스템(4000)의 구성 요소들의 상이한 특성들을 보상하기 위해, 연산 처리 장치(4100)와 제 N 전자 장치(4900) 사이에서 다양한 보상 동작을 수행할 수 있다.
도 11, 도 12a, 및 도 12b의 전자 시스템(4000)을 구현하기 위해, 연산 처리 장치(4100) 및 전자 장치들(4300, 4400, 4800, 4900)은 도 1 내지 도 10을 참조하여 설명된 구성들, 동작들, 과정들, 방법들 및 통신들 중 적어도 하나를 채용할 수 있다. 연산 처리 장치(4100) 및 전자 장치들(4300, 4400, 4800, 4900)은 서로 통신하기 위해 USB, SCSI, PCIe, NVMe, SATA, SAS, SD 카드, eMMC, UFS 등과 같은 다양한 인터페이스 규약 중 적어도 하나를 채용할 수 있으나, 이 예는 본 발명을 한정하기 위한 것은 아니다.
도 13은 본 발명의 실시 예에 따른 전자 장치의 예시적인 구성 및 그것의 인터페이스들을 나타낸 블록도이다. 전자 장치(5000)는 MIPI 연합(Mobile Industry Processor Interface Alliance)에 의해 제안된 인터페이스 규약을 이용하거나 지원할 수 있는 데이터 처리 장치로 구현될 수 있다. 예로서, 전자 장치(5000)는 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트 폰, 태블릿 컴퓨터, 웨어러블 장치 등과 같은 전자 장치들 중 하나일 수 있다.
전자 장치(5000)는 어플리케이션 프로세서(5100), 디스플레이들(5220, 5221), 및 이미지 센서들(5230, 5231)을 포함할 수 있다. 어플리케이션 프로세서(5100)는 DigRF 마스터(5110), DSI(Display Serial Interface) 호스트(5120), CSI(Camera Serial Interface) 호스트(5130), 및 물리 계층(5140)을 포함할 수 있다.
DSI 호스트(5120)는 DSI에 따라 디스플레이(5220)의 DSI 장치(5225)와 통신할 수 있다. 예로서, DSI 호스트(5120)에는 시리얼라이저(SER)가 구현될 수 있고, DSI 장치(5225)에는 디시리얼라이저(DES)가 구현될 수 있다. 디스플레이(5220)는 DSI에 따라 디스플레이(5221)의 DSI 장치(5226)와 통신할 수 있다. 예로서, DSI 장치(5225)에는 시리얼라이저(SER)가 더 구현될 수 있고, DSI 장치(5226)에는 디시리얼라이저(DES)가 구현될 수 있다.
한편, 디스플레이(5221)는 어플리케이션 프로세서(5100)와 직접 연결되지 않을 수 있다. 따라서, 어플리케이션 프로세서(5100)는 디스플레이(5220)를 통해 디스플레이(5221)의 DSI 장치(5226)와 통신할 수 있다. 디스플레이(5220)는 어플리케이션 프로세서(5100), 디스플레이(5220), 및 디스플레이(5221)의 상이한 특성들을 보상하기 위해 다양한 보상 동작을 수행할 수 있다.
CSI 호스트(5130)는 CSI에 따라 이미지 센서(5230)의 CSI 장치(5235)와 통신할 수 있다. 예로서, CSI 호스트(5130)에는 디시리얼라이저(DES)가 구현될 수 있고, CSI 장치(5235)에는 시리얼라이저(SER)가 구현될 수 있다. 이미지 센서(5230)는 CSI에 따라 이미지 센서(5231)의 CSI 장치(5236)와 통신할 수 있다. 예로서, CSI 장치(5235)에는 디시리얼라이저(DES)가 더 구현될 수 있고, CSI 장치(5236)에는 시리얼라이저(SER)가 구현될 수 있다.
한편, 이미지 센서(5231)는 어플리케이션 프로세서(5100)와 직접 연결되지 않을 수 있다. 따라서, 어플리케이션 프로세서(5100)는 이미지 센서(5230)를 통해 이미지 센서(5231)의 CSI 장치(5236)와 통신할 수 있다. 이미지 센서(5230)는 이미지 센서(5231), 이미지 센서(5230), 및 어플리케이션 프로세서(5100)의 상이한 특성들을 보상하기 위해 다양한 보상 동작을 수행할 수 있다.
전자 장치(5000)는 어플리케이션 프로세서(5100)와 통신하는 RF(Radio Frequency) 칩(5240)을 더 포함할 수 있다. RF 칩(5240)은 물리 계층(5242), DigRF 슬레이브(5244), 및 안테나(5246)를 포함할 수 있다. 예로서, RF 칩(5240)의 물리 계층(5242)과 어플리케이션 프로세서(5100)의 물리 계층(5140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 장치(5000)는 워킹 메모리(5250), 임베디드 스토리지 장치(5251), 및 카드 스토리지 장치(5252)를 더 포함할 수 있다. 워킹 메모리(5250), 임베디드 스토리지 장치(5251), 및 카드 스토리지 장치(5252)는 어플리케이션 프로세서(5100)를 위해 데이터를 저장하거나 출력할 수 있다.
워킹 메모리(5250)는 어플리케이션 프로세서(5100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(5250)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
임베디드 스토리지 장치(5251) 및 카드 스토리지 장치(5252)는 전원 공급 여부와 관계없이 데이터를 저장할 수 있다. 예로서, 임베디드 스토리지 장치(5251) 및 카드 스토리지 장치(5252)는 각각 도 2의 임베디드 스토리지 장치(2300) 및 착탈식 스토리지 장치(2400)에 대응할 수 있다.
전자 장치(5000)는 Wimax(World Interoperability for Microwave Access, 5260), WLAN(Wireless Local Area Network, 5262), UWB(Ultra Wideband, 5264) 등과 같은 통신 모듈을 통해 외부 장치/시스템과 통신할 수 있다. 이 외에도, 전자 장치(5000)는 LTE(Long Term Evolution), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP(Transfer Control Protocol/Internet Protocol), USB, SCSI, M-PCIe(Mobile PCIe), Firewire 등의 다양한 유선 통신 규약 중 적어도 하나에 따라 외부 장치/시스템과 통신할 수 있다.
전자 장치(5000)는 음성 정보를 처리하기 위한 스피커(5270) 및 마이크(5275)를 더 포함할 수 있다. 나아가, 전자 장치(5000)는 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(5280)를 더 포함할 수 있다. 전자 장치(5000)는 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(5290)을 더 포함할 수 있다.
위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.

Claims (10)

  1. 제 1 특성을 갖는 패킷을 처리하도록 구성되는 착탈식 스토리지 장치와 직접 통신하도록 연결되고, 제 2 특성을 갖는 패킷을 처리하도록 구성되는 임베디드 스토리지 장치; 및
    상기 임베디드 스토리지 장치와 직접 통신하도록 연결되고 상기 착탈식 스토리지 장치와 직접 연결되지 않고, 제 3 특성을 갖는 패킷을 처리하도록 구성되는 어플리케이션 프로세서를 포함하되,
    상기 임베디드 스토리지 장치는, 상기 착탈식 스토리지 장치로부터 수신되는 상기 제 1 특성의 제 1 패킷, 및 상기 임베디드 스토리지 장치에서의 상기 제 2 특성의 제 2 패킷 중 적어도 하나가 상기 제 3 특성에 따라 상기 어플리케이션 프로세서로 제공되도록, 상기 제 1 특성 및 상기 제 2 특성 중 적어도 하나를 보상하도록 구성되는 전자 장치.
  2. 제 1 항에 있어서,
    상기 제 1 특성은 상기 착탈식 스토리지 장치에 의해 생성되는 제 1 데이터 쓰기 요청 패킷들의 제 1 개수와 관련되고,
    상기 제 2 특성은 상기 임베디드 스토리지 장치에 의해 생성되는 제 2 데이터 쓰기 요청 패킷들의 제 2 개수와 관련되고,
    상기 제 3 특성은 상기 어플리케이션 프로세서에 의해 최대로 지원되는 데이터 쓰기 요청 패킷들의 제 3 개수와 관련되고,
    상기 임베디드 스토리지 장치는, 상기 제 1 데이터 쓰기 요청 패킷들 중에서 상기 임베디드 스토리지 장치를 통해 상기 어플리케이션 프로세서로 제공되는 제 3 데이터 쓰기 요청 패킷들의 제 4 개수와 상기 제 2 데이터 쓰기 요청 패킷들 중에서 상기 어플리케이션 프로세서로 제공되는 제 4 데이터 쓰기 요청 패킷들의 제 5 개수의 합이 상기 제 3 개수보다 크지 않도록, 상기 제 1 데이터 쓰기 요청 패킷들 및 상기 제 2 데이터 쓰기 요청 패킷들의 상기 어플리케이션 프로세서로의 전송을 관리하도록 더 구성되는 전자 장치.
  3. 제 2 항에 있어서,
    상기 제 1 개수와 상기 제 2 개수의 합이 상기 제 3 개수보다 큰 경우, 상기 임베디드 스토리지 장치는 상기 제 4 데이터 쓰기 요청 패킷들을 제외한 상기 제 1 데이터 쓰기 요청 패킷들의 제 1 일부분 및 상기 제 5 데이터 쓰기 요청 패킷들을 제외한 상기 제 2 데이터 쓰기 요청 패킷들의 제 2 일부분 중 적어도 하나를 버퍼링하도록 더 구성되는 전자 장치.
  4. 제 3 항에 있어서,
    상기 제 4 개수와 상기 제 5 개수의 합이 상기 제 3 개수보다 작은 경우, 상기 임베디드 스토리지 장치는 상기 버퍼링된 제 1 일부분 및 상기 버퍼링된 제 2 일부분 중 적어도 하나를 상기 어플리케이션 프로세서로 제공하도록 더 구성되는 전자 장치.
  5. 제 1 항에 있어서,
    상기 제 1 특성은 상기 제 1 패킷에서 하나의 헤더 부분에 대응하는 제 1 데이터 부분의 제 1 단위 크기와 관련되고,
    상기 제 2 특성은 상기 제 2 패킷에서 하나의 헤더 부분에 대응하는 제 2 데이터 부분의 제 2 단위 크기와 관련되고,
    상기 제 3 특성은 상기 어플리케이션 프로세서에 의해 처리되는 패킷에서 하나의 헤더 부분에 대응하는 데이터 부분의 제 3 단위 크기와 관련되고,
    상기 임베디드 스토리지 장치는, 상기 제 1 패킷 및 상기 제 2 패킷 중 적어도 하나에서 하나의 헤더 부분에 대응하는 데이터 부분이 상기 제 3 단위 크기를 갖도록, 상기 제 1 데이터 부분 및 상기 제 2 데이터 부분 중 적어도 하나 및 대응하는 헤더 부분을 재구성하도록 더 구성되는 전자 장치.
  6. 제 5 항에 있어서,
    상기 제 1 또는 제 2 단위 크기가 상기 제 3 단위 크기보다 큰 경우, 상기 임베디드 스토리지 장치는:
    상기 제 1 또는 제 2 데이터 부분을, 각각이 상기 제 3 단위 크기를 갖는 복수의 새로운 데이터 부분으로 분할하고;
    상기 복수의 새로운 데이터 부분에 각각 대응하는 복수의 새로운 헤더 부분을 생성하고;
    각각이 상기 복수의 새로운 데이터 부분 중 하나 및 상기 복수의 새로운 헤더 부분 중 대응하는 하나를 포함하는 복수의 재구성된 패킷을 상기 어플리케이션 프로세서로 제공하도록 더 구성되는 전자 장치.
  7. 제 5 항에 있어서,
    상기 제 1 또는 제 2 단위 크기가 상기 제 3 단위 크기보다 작은 경우, 상기 임베디드 스토리지 장치는:
    상기 제 1 또는 제 2 데이터 부분, 및 상기 제 1 또는 제 2 패킷을 뒤잇는 하나 이상의 패킷들의 데이터 부분들이 상기 제 3 단위 크기만큼 누적될 때까지, 상기 제 1 또는 제 2 패킷 및 상기 하나 이상의 패킷들을 버퍼링하고;
    상기 제 3 단위 크기만큼 누적된 상기 제 1 또는 제 2 데이터 부분 및 상기 하나 이상의 패킷들의 상기 데이터 부분들을 하나의 데이터 부분으로 결합하고;
    상기 결합된 데이터 부분에 대응하는 새로운 헤더 부분을 생성하고;
    상기 결합된 데이터 부분 및 상기 새로운 헤더 부분을 포함하는 재구성된 패킷을 상기 어플리케이션 프로세서로 제공하도록 더 구성되는 전자 장치.
  8. 제 1 항에 있어서,
    상기 제 1 특성은 상기 착탈식 스토리지 장치로부터 출력되는 패킷들의 데이터의 순서가 아웃-오브-오더(Out-of-order)임을 나타내고,
    상기 제 2 특성은 상기 임베디드 스토리지 장치로부터 출력되는 패킷들의 데이터의 순서가 아웃-오브-오더임을 나타내고,
    상기 제 3 특성은 상기 어플리케이션 프로세서에 의해 처리되는 패킷들의 데이터의 순서가 인-오더(In-order)임을 나타내고,
    상기 임베디드 스토리지 장치는:
    상기 제 1 패킷과 관련되는 제 1 데이터 및 상기 제 2 패킷과 관련되는 제 2 데이터 중 적어도 하나의 아웃-오브-오더 순서를 인-오더 순서로 정렬하고;
    상기 정렬된 제 1 데이터 및 상기 정렬된 제 2 데이터 중 적어도 하나를 상기 어플리케이션 프로세서로 제공하도록 더 구성되는 전자 장치.
  9. 제 1 항에 있어서,
    상기 임베디드 스토리지 장치는, 상기 어플리케이션 프로세서로부터 수신되는 상기 제 3 특성의 제 3 패킷이 상기 제 1 특성에 따라 상기 착탈식 스토리지 장치로 전달되거나 상기 제 2 특성에 따라 상기 임베디드 스토리지 장치에서 처리되도록, 상기 제 3 특성을 보상하도록 더 구성되는 전자 장치.
  10. 제 9 항에 있어서,
    상기 제 1 특성은 상기 착탈식 스토리지 장치에 포함되는 제 1 메모리 영역들의 제 1 식별 번호들과 관련되고,
    상기 제 2 특성은 상기 임베디드 스토리지 장치에 포함되는 제 2 메모리 영역들의 제 2 식별 번호들과 관련되고,
    상기 제 3 특성은 상기 어플리케이션 프로세서에 의해 관리되는 상기 제 1 및 제 2 메모리 영역들의 제 3 식별 번호들과 관련되고,
    상기 임베디드 스토리지 장치는 상기 제 1 및 제 2 식별 번호들과 상기 제 3 식별 번호들 사이의 대응 관계에 기초하여, 상기 제 3 패킷에 의해 지시되는 상기 제 3 식별 번호들 중 하나를 상기 제 1 및 제 2 식별 번호들 중 대응하는 하나로 맵핑하도록 더 구성되는 전자 장치.
KR1020160121638A 2016-09-22 2016-09-22 직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치 KR20180032733A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160121638A KR20180032733A (ko) 2016-09-22 2016-09-22 직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치
US15/702,035 US10296261B2 (en) 2016-09-22 2017-09-12 Electronic device compensating different characteristics of serially connected storage devices and storage device included therein
CN201710815886.9A CN107870743B (zh) 2016-09-22 2017-09-12 补偿存储装置的不同特性的电子装置及其包括的存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160121638A KR20180032733A (ko) 2016-09-22 2016-09-22 직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20180032733A true KR20180032733A (ko) 2018-04-02

Family

ID=61617519

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160121638A KR20180032733A (ko) 2016-09-22 2016-09-22 직렬로 연결되는 스토리지 장치들의 상이한 특성들을 보상하도록 구성되는 전자 장치, 및 그것에 포함되는 스토리지 장치

Country Status (3)

Country Link
US (1) US10296261B2 (ko)
KR (1) KR20180032733A (ko)
CN (1) CN107870743B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180034778A (ko) * 2016-09-27 2018-04-05 삼성전자주식회사 직렬로 연결되는 스토리지 장치들 중 직접 연결되지 않은 스토리지 장치로의 바이패스 경로를 제공하도록 구성되는 전자 장치, 그것에 포함되는 스토리지 장치, 그것을 포함하는 컴퓨팅 시스템, 및 그것을 이용하여 통신하는 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463772A (en) 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US6378018B1 (en) 1997-10-10 2002-04-23 Intel Corporation Memory device and system including a low power interface
US8051197B2 (en) 2002-03-29 2011-11-01 Brocade Communications Systems, Inc. Network congestion management systems and methods
CN1266957C (zh) * 2003-06-23 2006-07-26 明基电通股份有限公司 通信系统及其信号预处理装置与信号接收装置
US20050138184A1 (en) 2003-12-19 2005-06-23 Sanrad Ltd. Efficient method for sharing data between independent clusters of virtualization switches
US7246252B1 (en) 2003-12-31 2007-07-17 Xilinx, Inc. Delay compensation
US20090063786A1 (en) 2007-08-29 2009-03-05 Hakjune Oh Daisy-chain memory configuration and usage
CN101599971B (zh) * 2009-07-17 2012-09-05 中国电力科学研究院 一种串联补偿装置的通信管理设备及其管理方法
US8238244B2 (en) 2009-08-10 2012-08-07 Micron Technology, Inc. Packet deconstruction/reconstruction and link-control
KR20140112303A (ko) 2013-03-13 2014-09-23 삼성전자주식회사 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
TWM486210U (zh) * 2014-01-28 2014-09-11 Chyng Hong Electronic Co Ltd 交直流電源供應器之主從控制系統
CN110457236B (zh) * 2014-03-28 2020-06-30 三星电子株式会社 存储系统以及对存储系统执行和验证写保护的方法
JP6267570B2 (ja) * 2014-04-23 2018-01-24 株式会社アドバンテスト 補償回路、情報処理装置、補償方法、およびプログラム
US9904651B2 (en) 2014-07-31 2018-02-27 Samsung Electronics Co., Ltd. Operating method of controller for setting link between interfaces of electronic devices, and storage device including controller
US9515686B2 (en) 2014-08-11 2016-12-06 Samsung Electronics Co., Ltd. Signal transmitting circuit using common clock, and storage device therewith
US9819544B2 (en) 2014-10-31 2017-11-14 Distech Controls Inc. Method for configuring devices in a daisy chain communication configuration

Also Published As

Publication number Publication date
CN107870743A (zh) 2018-04-03
CN107870743B (zh) 2022-05-24
US20180081595A1 (en) 2018-03-22
US10296261B2 (en) 2019-05-21

Similar Documents

Publication Publication Date Title
US11888967B2 (en) Technologies for dynamic accelerator selection
US11385795B2 (en) Method and apparatus to enable individual non volatile memory express (NVMe) input/output (IO) queues on differing network addresses of an NVMe controller
US11416309B2 (en) Technologies for dynamic accelerator selection
EP4002134A1 (en) Direct memory access (dma) engine with network interface capabilities
US10592144B2 (en) Storage system fabric with multichannel compute complex
US10942887B2 (en) Electronic device configured to control non-directly connected storage device among serially connected storage devices, storage device included therein, computing system including the same, and operation method of controller of storage device
CN104011656B (zh) 使用直接数据路径架构来存储数据以降低能量消耗和改进性能
KR102513920B1 (ko) 비휘발성 스토리지 시스템 및 비휘발성 스토리지 장치들을 위한 데이터 스토리지 액세스 프로토콜
WO2019233322A1 (zh) 资源池的管理方法、装置、资源池控制单元和通信设备
US10635349B2 (en) Storage device previously managing physical address to be allocated for write data
US11093174B1 (en) Information handling system having improved host memory buffer for input/output requests
CN107918526B (zh) 包括监测电路的电子装置和包括在其内的存储装置
KR20180034778A (ko) 직렬로 연결되는 스토리지 장치들 중 직접 연결되지 않은 스토리지 장치로의 바이패스 경로를 제공하도록 구성되는 전자 장치, 그것에 포함되는 스토리지 장치, 그것을 포함하는 컴퓨팅 시스템, 및 그것을 이용하여 통신하는 방법
US20190102107A1 (en) Techniques for batch operations to storage devices
CN114385236A (zh) 传递可编程原子操作符到存储器控制器
WO2022086730A1 (en) Asynchronous pipeline merging using long vector arbitration
US10296261B2 (en) Electronic device compensating different characteristics of serially connected storage devices and storage device included therein
US11740800B2 (en) Alleviating memory hotspots on systems with multiple memory controllers
US11409539B2 (en) On-demand programmable atomic kernel loading
US20220321434A1 (en) Method and apparatus to store and process telemetry data in a network device in a data center
US20220206937A1 (en) Saturating local cache in memory-compute systems
CN116569154A (zh) 数据传输方法和相关装置
CN118295943A (zh) 读响应保序方法、系统、存储介质及电子设备
CN114911411A (zh) 一种数据存储方法、装置及网络设备

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