KR20170094482A - 다중 포트 메모리 장치 및 그것을 이용한 방법 - Google Patents

다중 포트 메모리 장치 및 그것을 이용한 방법 Download PDF

Info

Publication number
KR20170094482A
KR20170094482A KR1020160100897A KR20160100897A KR20170094482A KR 20170094482 A KR20170094482 A KR 20170094482A KR 1020160100897 A KR1020160100897 A KR 1020160100897A KR 20160100897 A KR20160100897 A KR 20160100897A KR 20170094482 A KR20170094482 A KR 20170094482A
Authority
KR
South Korea
Prior art keywords
port
data transfer
controller
memory
transfer request
Prior art date
Application number
KR1020160100897A
Other languages
English (en)
Other versions
KR102351671B1 (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 KR20170094482A publication Critical patent/KR20170094482A/ko
Application granted granted Critical
Publication of KR102351671B1 publication Critical patent/KR102351671B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Static Random-Access Memory (AREA)
  • Dram (AREA)

Abstract

컨트롤러와 통신하는 다중 포트 메모리 장치는 컨트롤러에 의해 제공되는 데이터를 저장하는 메모리 어레이, 제1 컨트롤러 채널을 통해 컨트롤러와 결합되는 제1 포트, 제2 컨트롤러 채널을 통해 컨트롤러와 결합되는 제2 포트, 프로세서, 그리고 프로세서에 대한 프로세서 메모리를 포함한다. 프로세서 메모리는 프로세서에 의해 실행되는 때에 프로세서가, 제1 컨트롤러 채널로부터 수신되는 제1 제어 신호 또는 제2 컨트롤러 채널로부터 수신되는 제2 제어 신호에 응답하여 제1 포트 또는 제2 포트를 통한 데이터 전송을 활성화하고, 수신된 제1 및 제2 제어 신호들 중 적어도 하나를 디코드하여 메모리 어레이의 읽기 또는 쓰기 동작을 포함하는 수행할 데이터 동작을 식별하고, 그리고 식별된 데이터 동작을 실행하는 것을 수행하도록 하는 명령들을 저장한다.

Description

다중 포트 메모리 장치 및 그것을 이용한 방법{MULTI-PORT MEMORY DEVICE AND A METHOD OF USING THE SAME}
본 발명은 불휘발성 솔리드 스테이트 드라이브의 다중 포트 메모리 장치 및 그것을 이용한 방법에 관한 것이다.
매일, 세계적으로 수백 경 바이트의 데이터가 생성되고 있다. 이러한 데이터는 소셜 미디어 사이트들의 포스트들, 온라인 비디오들, 금융의 상호 거래들, 세계의 센서들에 의해 수집되는 감지 정보 등을 포함한다. 이러한 막대한 양의 데이터는 솔리드 스테이트 스토리지 장치들(SSD)과 같은 스토리지 노드들에 저장 및 유지되며, 스토리지 노드들은 지역 네트워크 또는 인터넷으로 액세스 가능한 스토리지에 위치한다. 저장된 데이터는 검색, 암호화/복호화, 압축/압축해제, 그리고/또는 다른 처리들과 같은 처리들을 경험한다. 몇몇 서버 플랫폼에서, 예를 들어 중앙 처리부(CPU)와 같은 처리 장치는 데이터에 대한 동작들을 수행한다. 데이터는 SSD로부터 읽혀지고, CPU에 의해 처리되며, 처리된 데이터는 요청의 근원으로 전송된다.
SSD는 데이터의 저장을 위한 불휘발성 메모리(예를 들어 플래시 메모리) 및 불휘발성 메모리 장치와의 데이터의 전송을 가능하게 하는 컨트롤러를 포함한다. 컨트롤러는 호스트(예를 들어 서버)로부터의 복수의 읽기 및 쓰기 커맨드 요청들을 큐잉(queuing)할 수 있다. 이와 같이, 컨트롤러는 불휘발성 메모리 장치에 한 번에 하나보다 많은 요청을 전송할 수 있으며, 따라서 SSD의 전체적인 성능을 향상시킬 수 있다. 컨트롤러는 다수의 채널들을 통해 불휘발성 메모리 장치에 데이터를 기입하거나 그것으로부터 데이터를 읽을 수 있다. 불휘발성 메모리 장치는 그룹들로 조직화되는 복수의 메모리 장치들(예를 들어 NAND 장치들)을 포함할 수 있다. 메모리 장치들의 각 그룹은 컨트롤러 채널들 중 대응하는 하나에 연결될 수 있다.
컨트롤러 채널이 읽기 또는 쓰기 요청(즉 입력/출력 또는 I/O 요청)을 서비스할 때, 사용되는 동일한 채널의 불휘발성 메모리 장치들 중 하나에 대한 동시 액세스는 불가능하다. 즉, 하나의 채널에 하나의 메모리 장치가 I/O 동작에서 사용중일 때, 동일한 채널의 다른 모든 메모리 장치들은 해당 I/O 동작이 완료될 때까지 유휴 상태로 남겨진다. 유휴 시간은 SSD의 성능 및 레이턴시에 직접적으로 영향을 주는 컨트롤러의 오버헤드로 존재한다.
상술된 정보는 발명의 이해를 돕기 위한 것이며, 이 분야에 숙련된 자들에게 이미 알려진 선행 기술을 형성하지 않는다.
본 발명의 목적은 향상된 가용성을 갖는 다중 포트 메모리 장치 및 그것을 이용한 방법을 제공하는 데에 있다.
본 발명의 실시 예들은 제1 및 제2 입출력 포트들 중 하나 또는 모두를 통해 데이터 전송 요청들을 수신 및 처리하도록 구성되는 다중 포트(예를 들어, 듀얼 포트) 메모리 장치에 관한 것이다. 두 포트들 각각은 컨트롤러의 개별 채널들에 의해 결합되고 제어된다.
본 발명의 실시 예들은 다중 포트(예를 들어, 듀얼 포트) 메모리 장치를 활용하는 솔리드 스테이트 드라이브 및 그것을 동작하는 방법에 관한 것이다.
본 발명의 실시 예들에 따르면, 컨트롤러와 통신하는 다중 포트 메모리 장치가 제공된다. 다중 포트 메모리 장치는 상기 컨트롤러에 의해 제공되는 데이터를 저장하는 메모리 어레이, 제1 컨트롤러 채널을 통해 상기 컨트롤러와 결합되는 제1 포트, 제2 컨트롤러 채널을 통해 상기 컨트롤러와 결합되는 제2 포트, 프로세서, 그리고 상기 프로세서에 대한 프로세서 메모리를 포함한다. 상기 프로세서 메모리는 상기 프로세서에 의해 실행되는 때에 상기 프로세서가, 상기 제1 컨트롤러 채널로부터 수신되는 제1 제어 신호 또는 상기 제2 컨트롤러 채널로부터 수신되는 제2 제어 신호에 응답하여 상기 제1 포트 또는 상기 제2 포트를 통한 데이터 전송을 활성화하고, 상기 수신된 제1 및 제2 제어 신호들 중 적어도 하나를 디코드하여 상기 메모리 어레이의 읽기 또는 쓰기 동작을 포함하는 수행할 데이터 동작을 식별하고, 그리고 상기 식별된 데이터 동작을 실행하는 것을 수행하도록 하는 명령들을 저장한다.
본 발명의 실시 예들에 따르면, 스토리지 노드가 제공된다. 스토리지 노드는 행들로 배열되는 복수의 다중 포트 메모리 장치들, 그리고 컨트롤러를 포함한다. 상기 복수의 다중 포트 메모리 장치들 각각은 제1 및 제2 포트를 갖고, 상기 제1 및 제2 포트들 각각은 데이터 전송 요청들을 수신하도록 구성된다. 상기 컨트롤러는 복수의 컨트롤 채널들을 통해 상기 복수의 다중 포트 메모리 장치들의 데이터 전송을 수행하도록 구성된다. 상기 복수의 다중 포트 메모리 장치들 각각의 상기 제1 및 제2 포트들은 상기 복수의 컨트롤 채널들 중 두 개와 결합된다.
본 발명의 실시 예들에 따르면, 다중 포트 메모리 장치에서 데이터 전송을 수행하는 방법이 제공된다. 방법은 스토리지 노드의 컨트롤러로부터의 제1 데이터 전송 요청을 가리키는 제1 제어 신호를 상기 다중 포트 메모리 장치의 제1 포트를 통해 수신하는 단계, 상기 제1 포트를 통한 제1 데이터 전송을 활성화하고 상기 다중 포트 메모리 장치의 제2 포트를 통한 메모리 액세스를 차단하는 단계, 상기 제1 제어 신호를 디코드하여 상기 제1 데이터 전송 요청을 식별하는 단계, 그리고 상기 식별된 제1 데이터 전송 요청에 따라 상기 다중 포트 메모리 장치의 메모리 어레이의 상기 제1 데이터 전송을 시작하는 단계를 포함한다.
본 발명에 따르면, 다중 포트 메모리 장치는 다중 채널에 연결된다. 따라서, 하나의 행의 다중 포트 메모리 장치가 액세스되는 동안 동일 행의 다른 다중 포트 메모리 장치가 액세스될 수 있으며, 가용성이 향상된 다중 포트 메모리 장치 및 그것을 이용한 방법이 제공된다.
본 발명의 상술된 그리고 다른 특징들은 첨부된 도면들에 대한 예시적인 실시 예들의 상세한 설명에 의해 더 명백하질 수 있다.
도 1은 본 발명의 실시 예들에 따른 다중 포트 메모리 장치들에서 읽기 또는 쓰기 동작들을 수행하기 위해 호스트와 통신하는 스토리지 노드를 포함하는 시스템의 블록도이다.
도 2는 본 발명의 다른 실시 예들에 따른 다중 포트 메모리 장치들에서 읽기 또는 쓰기 동작들을 수행하기 위해 호스트와 통신하는 스토리지 노드를 포함하는 시스템의 블록도이다.
도 3은 본 발명의 실시 예들에 따른 다중 포트 메모리 장치의 블록도이다.
도 4는 본 발명의 다른 실시 예들에 따른 다중 포트 메모리 장치의 블록도이다.
도 5는 본 발명의 실시 예들에 따른 다중 포트 메모리 장치에서 데이터 전송을 수행하기 위한 프로세스의 순서도이다.
도 6은 본 발명의 실시 예들에 따른 제1 데이터 전송에 이미 연관된 다중 포트 메모리 장치에서 제2 데이터 전송을 수행하기 위한 프로세스의 순서도이다.
본 발명의 예시적인 실시 예들을 설명하기 위한 첨부된 도면들은 본 발명, 본 발명의 장점 및 본 발명에 의해 달성되는 목표들의 충분한 이해를 돕기 위해 참조된다. 그러나 본 발명은 다양한 형태들로 실시될 수 있으며, 여기에 개시되는 실시 예들에 한정되지 않는다. 실시 예들은 본 게시가 충분하고 완전하게 되도록 제공되며, 본 발명의 기술적 사상을 이 분야에 숙련된 자들에게 충분히 전달할 수 있도록 제공된다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예들을 설명함으로써 본 발명이 상세하게 설명된다. 도면들에서, 유사한 참조 번호들은 유사한 특징들 및 구성 요소들을 참조하는 데에 도면 전체적으로 사용된다.
도 1은 본 발명의 실시 예들에 따른 다중 포트(예를 들어 듀얼 포트) 메모리 장치들에서 읽기 또는 쓰기 동작들을 수행하기 위해 호스트(200)와 통신하는 스토리지 노드(100)를 포함하는 시스템(10)의 블록도이다.
도 1을 참조하면, 스토리지 노드(예를 들어 솔리드 스테이트 드라이브(SSD))(100)는 호스트(예를 들어 서버)(200)로부터의 요청들에 응답하여 읽기 데이터 요청들 또는 쓰기 데이터 요청들과 같은 데이터 전송 요청들을 수행할 수 있다. 예시적으로, 호스트(200) 및 스토리지 노드(100)는 클라우드 기반 컴퓨팅 환경에서 구현될 수 있다. 호스트(200) 및 스토리지 노드(100)는 PCIe와 같은 적절한 스토리지 버스를 이용하여 그리고 그것에서 구동되는 적절한 프로토콜을 이용하여 통신할 수 있다. 다른 예로서, 스토리지 노드(100)는 호스트 중앙 처리부(CPU)에 연결되고 그것에 의해 제어될 수 있다. 호스트 중앙 처리부(CPU)는 서버 CPU 또는 서버로 구성되지 않은 응용 내의 CPU일 수 있다.
여기에서, "통신하다"는 표현은 하나 또는 그보다 많은 여기에서 호명되거나 호명되지 않는 구성 요소들을 통한 직접 통신 또는 간접 통신을 나타낼 수 있다. 스토리지 노드(100) 및 호스트(200)는 유선 또는 무선 연결을 통해 서로 통신할 수 있다. 예를 들어, 스토리지 노드(100)는 호스트(200)의 대응하는 소켓(또는 핀들)에 부합하는 핀들(또는 소켓)을 갖는 커넥터를 포함하며, 전기적 그리고 물리적 연결을 수립할 수 있다. 다른 예로서, 스토리지 노드(100)는 무선 송수신기를 포함하며, 스토리지 노드(100) 및 호스트(200)가 서로 무선 통신하도록 할 수 있다. 스토리지 노드(100) 및 호스트(200)는 서로 분리되어 하우징될 수 있으며, 또는 동일 하우징 내에 포함될 수 있다. 스토리지 노드(100) 및 호스트(200)는 추가적인 구성 요소들을 포함할 수 있으며, 도면들 단순화하기 위하여 도 1에 도시되지는 않는다.
본 발명의 실시 예에 따르면, 스토리지 노드(100)는 호스트 인터페이스(102), 컨트롤러(104), 휘발성 메모리(예를 들어 동적 랜덤 액세스 메모리(DRAM))(106), 그리고 복수의 다중 포트(예를 들어 듀얼 포트) 메모리 장치들(예를 들어 듀얼 포트 플래시 다이들 또는 NAND 플래시 칩들)(300)을 포함하는 불휘발성 메모리(예를 들어 플래시 메모리)(110)를 포함한다. 컨트롤러(104)는 스토리지 노드(100)와의 데이터 전송을 가능하게 한다. 호스트 인터페이스(102)는 호스트(200) 및 컨트롤러(104) 사이에서 이들의 통신을 가능하게 하는 중재자 또는 통신 매체로 동작한다. 호스트(200)와의 데이터 전송들은 스토리지 노드(100)의 내부 데이터 버퍼(즉 휘발성 메모리(106))를 거치며, 불휘발성 메모리(110) 및 호스트(200) 사이의 상이한 데이터 포맷들이 조절된다.
스토리지 노드(100)는 불휘발성 메모리(110)와 데이터를 전송하기 위한 전달자로 동작하는 복수의 양방향 채널들(예를 들어 플래시 채널들)을 구비할 수 있다. 채널들(108-0~108-N) 각각은 하나 또는 그보다 많은 다중 포트 메모리 장치들(300)에 대응(예를 들어 전기적으로 결합)할 수 있다. 복수의 채널들을 구비하는 것은 컨트롤러(104)에 의해 쓰기 및 읽기 커맨드들을 병렬 처리하는 것을 가능하게 한다. 예를 들어, 주어진 시간에, 하나의 채널(예를 들어 108-0)은 다중 포트 메모리 장치들(300)의 세트(예를 들어 행)에 기입할 수 있으며, 다른 하나의 채널(예를 들어 108-1)은 다중 포트 메모리 장치들(300)의 다른 세트(예를 들어 열)로부터 읽을 수 있다.
컨트롤러(104)는 호스트(200)와의 데이터 전송들의 성능을 향상(예를 들어 최적화)시키기 위해 큐잉 동작을 수행할 수 있도록 구성된다. 이에 따라, 호스트(200)는 스토리지 노드(100)로 복수의 커맨드 요청들을 전송할 수 있으며, 컨트롤러(104)는 커맨드들을 사전 처리하고 불휘발성 메모리(110)로 한 번에 하나보다 많은 요청을 전송할 수 있다. 따라서, 스토리지 노드(100)의 전체적인 성능이 향상(예를 들어 증가)된다.
본 발명의 실시 예들에 따르면, 다중 포트 메모리 장치들(300) 각각은 지정할 수 있는 제1 및 제2 포트들(즉 입출력 포트들)(112a, 112b)을 가지며, 이들은 컨트롤러(104)로부터의 데이터 전송 요청들을 수신하도록 구성된다. 제1 및 제2 포트들(112a, 112b)은 메모리 장치(300)의 다중 포트들을 컨트롤러(104)의 채널들과 결합하는 물리적 커넥터들 및 전기적 회로들을 포함한다.
도 1에 도시된 바와 같이, 본 발명의 실시 예들에 따르면, 컨트롤러 채널들의 일부는 인접한 다중 포트 메모리 장치들에서 공유된다. 예를 들어, 제1 채널(108-0)은 다중 포트 메모리 장치들(300)의 제1행의 제1 포트들(112a)에 결합되고, 제2 채널(108-1)은 다중 포트 메모리 장치들(300)의 제2행의 제1 포트들(112a) 및 다중 포트 메모리 장치들(300)의 제1행의 제2 포트들(112b)에 결합될 수 있다. 마찬가지로, 제3 채널(108-2)은 다중 포트 메모리 장치들(300)의 제2행의 제2 포트들(112b) 및 다중 포트 메모리 장치들(300)의 제3행의 제1 포트들(112a) 사이에서 공통으로 공유(즉 전기적으로 양쪽에 연결)될 수 있다. 따라서, 불휘발성 메모리(110)가 메모리 장치들(300)의 N 행들(N은 2보다 큰 정수)로 조직화된 실시 예에서, 컨트롤러(104)는 N+1 채널들을 구비할 수 있다. 제1 및 제N+1 채널(즉, 108-0 및 108-N)은 메모리 장치들(300)의 제1 및 제N 행에만 각각 결합되며, 나머지 채널들은 메모리 장치들(300)의 대응하는 두 개의 연속적인 행들에서 각각 공유될 수 있다. 따라서, 이러한 실시 예에서, 컨트롤러(104)는 단일 포트 메모리 장치들을 사용하는 비교 대상의 장치와 비교하여 하나의 추가 채널을 가질 수 있다.
예시적으로, 컨트롤러 채널과 메모리 장치들(300)의 행들의 연결은 순환 구성을 가질 수 있다. 즉, 메모리 장치들(300)의 N 행들을 구비한 실시 예에서, 메모리 장치들(300)의 제N 행의 제2 포트들(112b)을 제N+1 채널에 연결하는 것보다는, 제2 포트들(112b)은 제1 채널(108-0)과 결합될 수 있다. 이러한 실시 예에서, 채널들의 수는 행들의 수와 동일하다. 다시 말하면, 이러한 실시 예에서, 모든 컨트롤러 채널은 공유되고 메모리 장치들(300)의 인접한(예를 들어 연속인) 두 개의 행들에 결합된다.
다중 포트 메모리 장치들(300) 및 공유(또는 공통) 채널들의 사용은 스토리지 노드(100)가 요청을 서비스하거나 또는 다른 메모리 장치(300)와 데이터 전송을 수행하느라 바쁜 채널에 부착된 메모리 장치(300)를 액세스(예를 들어 읽기 또는 쓰기 동작을 위해)하는 것을 가능하게 한다. 이러한 상승된 장치 가용성은 가비지 컬렉션과 같은 특정한 동작들과 연관된 오버헤드를 감소시키는 데에 특히 필요하며, 호스트 요청들을 서비스하는 성능의 강화를 이끌어낸다.
도 2는 본 발명의 다른 실시 예들에 따른 다중 포트 메모리 장치(300)에서 읽기 또는 쓰기 동작들을 수행하기 위한 호스트(200)와 통신하는 스토리지 노드(100-1)를 포함하는 시스템(10-1)의 블록도이다. 시스템(10-1) 및 스토리지 노드(100-1)는 채널 할당을 제외하면, 구조 및 동작에서 시스템(10) 및 스토리지 노드(100)와 각각 실질적으로 유사하다. 따라서, 유사한 구성 요소들의 동작 및 구조의 설명은 여기서 반복되지 않는다.
도 2에 도시된 실시 예들에 따르면, 다중 포트(예를 들어 듀얼 포트) 메모리 장치들(300)의 각 행은 다중 포트 메모리 장치들(300)의 다른 행과 공유(예를 들어 결합)되지 않는 전용의 컨트롤러 채널들의 쌍에 결합된다. 예를 들어, 제1 및 제2 채널들(108-0, 108-1)은 다중 포트 메모리 장치들(300)의 제1행에 전용 지정되고 다중 포트 메모리 장치들(300)의 제1행의 제1 및 제2 포트들(112a, 112b)의 대응하는 것들에 결합된다. 마찬가지로, 제2N-1 및 제2N 채널들(108-(2N-2), 108-(2N-1))(N은 1보다 큰 정수)은 다중 포트 메모리 장치들(300)의 제N 행에 전용 지정된다. 따라서, 컨트롤러(104)는 N 행들 각각에서 동시에 두 개의 다중 포트 메모리 장치들(300)을 액세스할 수 있다. 도 1의 스토리지 노드(100)와 비교하여 채널들의 수를 거의 두 배로 사용함에 따라, 스토리지 노드(100-1)는 메모리 가용성을 더 증가시키고, 스토리지 노드(100)와 비교하여 더 큰 성능 개선이 달성된다.
도 3은 본 발명의 실시 예들에 따른 다중 포트(예를 들어 듀얼 포트) 메모리 장치(300)의 블록도이다.
도 3을 참조하면, 다중 포트 메모리 장치(300)는 제 포트(112a)에 위치한 제1 포트 인터페이스(302), 제2 포트(112b)에 위치한 제2 포트 인터페이스(302b), 라우터(304), 디코더(310), 메모리 어레이(312), 페이지 버퍼(314), 제1 입출력 버퍼(316a), 그리고 제2 입출력 버퍼(316b)를 포함한다.
실시 예들에 따르면, 제1 포트 인터페이스(302a)는 제1 채널을 통해 컨트롤러(104 또는 104-1)에 연결되고, 제2 포트 인터페이스(302b)는 제1 채널과 별도로 분리된 제2 채널을 통해 컨트롤러(104 또는 104-1)에 결합된다. 제1 채널로부터 수신되는 제1 제어 신호(CTRL1) 및 라우터(304)에 의한 긍정 판단에 응답하여, 제1 포트 인터페이스(302a)는 제1 포트(112a)를 통한 메모리 어레이(312)와의 데이터 전송을 가능하게 한다. 제1 포트 인터페이스(302a)는 제1 포트 인터페이스(302a)의 레디 상태 또는 비지 상태를 가리키는 제1 상태 신호(R/B1)(예를 들어 레디 비지 신호)를 컨트롤러(104 또는 104-1)로 더 전송할 수 있다. 예를 들어, 로직 로우 값(예를 들어 저전압)에서, 제1 상태 신호(R/B1)는 다중 포트 메모리 장치(300)가 비지임을 가리키며, 즉 처리 중인 동작(예를 들어 읽기 또는 쓰기 동작)이 있음을 가리킨다. 반대로, 로직 하이 값(예를 들어 고전압)은 다중 포트 메모리 장치(300)가 레디(또는 유휴) 상태임을 즉 동작과 관계되어 있지 않음을 가리킬 수 있다. 그러나 본 발명의 실시 예는 이에 한정되지 않으며, 레디 또는 비지 신호들의 논리값들(그리고 대응하는 전압 레벨들)은 반전될 수 있다. 제2 포트 인터페이스(302b)는 제2 채널로부터 수신되는 제2 제어 신호(CTRL2)와 연관되는 것을 제외하면 제1 포트 인터페이스(302a)와 동일하게 도는 실질적으로 동일한 방식으로 동작하며, 따라서 상세한 설명은 여기에서 반복되지 않는다.
따라서, 다중 포트 메모리 장치(300)는 제1 및 제2 포트 인터페이스들(302a, 302b)을 통해 독립적으로 커맨드들을 수용 및 해석하는 것이 가능하다.
실시 예들에 따르면, 라우터(304)는 제1 및 제2 포트 인터페이스들(302a, 302b)과 통신하며, 제1 제어 신호(CTRL1) 및 제2 제어 신호(CTRL2) 중 적어도 하나에 기반하여 제1 및 제2 포트 인터페이스들(302a, 302b) 중 하나에 의한 메모리 어레이(312)의 액세스를 허용한다.
실시 예들에서, 라우터(304)는 중재자(306)(예를 들어 중재 로직 유닛) 및 스위치(308)(예를 들어 스위치 로직 유닛) 포함한다. 중재자(306)는 컨트롤러(104)가 제1 및 제2 포트 인터페이스들(302a, 302b) 중 하나를 통해 데이터 전송을 위해 메모리 어레이(312)를 액세스하는 것을 허용한다. 중재자(306)는 컨트롤러(104)로부터 수신되는 제1 및 제2 제어 신호들(CTRL1, CTRL2) 중 적어도 하나에 기반하여 제1 및 제2 포트 인터페이스들(302a, 302b) 중 하나를 선택하여 데이터 전송을 가능하게 할 수 있다. 예를 들어, 제1 포트 인터페이스(302a)를 통한 제1 제어 신호(CTRL1)를 통해 데이터 전송을 위한 요청이 수신된 때에, 그리고 메모리 장치(300)가 컨트롤러(104)에 의한 다른 데이터 요청을 서비스하지 않는 때에, 중재자(306)는 데이터 전송을 위한 제1 포트 인터페이스(302a)를 통한 메모리 어레이(312)의 액세스를 가능하게 하고, 제2 포트 인터페이스(302)를 통한 액세스를 차단할 수 있다. 이때, 제1 및 제2 포트 인터페이스들(302a, 302b)은 상태 신호들(R/B1, R/B2)을 각각 변경하여 비지 상태를 반영할 수 있다. 이러한 예에서, 제2 포트 인터페이스(302b)에 대한 액세스는 제1 포트(112a)를 통한 데이터 전송이 완료되고 제1 및 제2 포트 인터페이스들(302a, 302b)이 상태 신호들(R/B1, R/B2)을 변경하여 레디 상태를 반영할 때까지 차단을 유지한다. 따라서, 어떤 주어진 시간에, 메모리 장치(300)는 제1 포트(112a) 또는 제2 포트(112b)를 통해 액세스될 수 있다.
중재자(306)에 의한 포트 선택에 응답하여, 스위치(308)는 선택된 포트로부터 수신되는 제어 신호를 디코더(310)로 라우팅하고, 대응하는 데이터를 메모리 어레이(312)로 또는 메모리 어레이(312)로부터 라우팅한다.
디코더(310)는 라우터(304)(예를 들어 스위치(308))와 결합되고, 수신된 제1 및 제2 제어 신호들(CTRL1, CTRL2) 중 선택된 하나를 해석(예를 들어 디코드)하여 수행할 데이터 동작(예를 들어 읽기 동작 또는 쓰기 동작)을 판별하고, 그리고 메모리 어레이(312)를 이용하여 데이터 동작을 수행할 수 있다.
메모리 어레이(312)는 컨트롤러(104)에 의해 제공되는 데이터를 저장하는 메모리 셀들의 서로 교차하는 행들 및 열들을 형성하는 매트릭스로 배열되는 복수의 메모리 셀들을 포함한다. 메모리 셀들은 NAND 메모리 셀들, NOR 메모리 셀들, 수직 NAND 메모리 셀들, 저항 메모리 셀들, 상 변화 메모리 셀들, 강유전체 메모리 셀들, 스핀-트랜스퍼-토크 메모리 등을 포함할 수 있다. 페이지 버퍼(314)는 메모리 어레이(312)에서 페이지 기반으로 기입되거나 읽히는 데이터를 래치할 수 있다.
제1 및 제2 입출력 버퍼들(316a, 316b)은 제1 및 제2 포트들(112a, 112b)을 통한 읽기 동작들 동안에 각각 임시 저장소로 기능한다. 예를 들어, 라우터(304)가 읽기 동작을 서비스하기 위하여 제1 포트 인터페이스(302a)를 활성화한 때에, 라우터(304)(예를 들어 스위치(308))는 제1 입출력 버퍼(316a)를 활성화하여 페이지 버퍼(314)로부터 페이지 단위로 요청된 데이터를 수신할 수 있다. 요청된 데이터(예를 들어 요청된 데이터 전체)의 미리 정해진 사이즈가 메모리 어레이(312)로부터 수신되어 저장되면, 제1 입출력 버퍼(316a)는 저장된 데이터를 제1 채널을 통해 컨트롤러(104)로 전송하기 위하여 제1 포트 인터페이스(302a)로 전달한다. 제2 입출력 버퍼(316b)는 제1 입출력 버퍼(316a)와 동일하게 또는 실질적으로 동일한 방법으로 동작하며, 따라서 상세한 설명은 반복되지 않는다.
도 4는 본 발명의 다른 실시 예들에 따른 다중 포트(예를 들어 듀얼 포트) 메모리 장치(300-1)의 블록도이다. 다중 포트 메모리 장치(300-1)는 도 3을 참조하여 설명된 다중 포트 메모리 장치(300)와 구조 및 동작 면에서 유사하며 다수의 구성 요소들을 공통으로 공유한다. 따라서, 공통 구성들 및 기능들이 설명은 반복되지 않으며, 아래에서는 다중 포트 메모리 장치(300)와 다른 다중 포트 메모리 장치(300-1)의 측면들이 주로 설명된다.
도 4를 참조하면, 다중 포트 메모리 장치(300-1)는 제1 및 제2 포트들(112a, 112b) 모두를 통한 메모리 어레이(312)로의 동시 액세스를 가능하게 할 수 있다. 예를 들어, 제1 포트(112a)가 앞서 설명(도 3을 참조하여)된 바와 같이 컨트롤러(104)에 의한 요청을 처리(즉, 제1 데이터 전송)하고 있을 때, 라우터(304-1)(예를 들어 중재자(306-1))는 제2 포트 인터페이스(302b)를 통한 액세스를 자동적으로 차단하지 않고, 제2 상태 신호(R/B2)는 레디 상태를 가리키고 제1 상태 신호(R/B1)는 비지 상태를 가리킬 수 있다. 또한, 제1 데이터 전송은 제1 디코더(310a) 및 제1 페이지 버퍼(314a)를 통해 처리될 수 있다. 이러한 예에서, 제2 데이터 전송 요청이 제2 제어 신호(CTRL2)를 통해 수신된 때에, 라우터(304-1)는 제2 데이터 전송이 제1 데이터 전송을 처리하기 위해 액세스중인 메모리 어레이(312)의 부분을 액세스할 필요가 있는지 판별할 수 있다. 중복이 있다면, 라우터(304-1)(예를 들어 중재자(306-1))는 제1 데이터 전송이 완료될 때까지 제2 요청을 대기시킬 수 있다. 라우터(304-1)가 두 요청들 사이에 메모리 셀 액세스의 중복이 없다고 판별하면, 중재자(306-1)는 데이터 전송을 위해 제2 포트 인터페이스(302b)를 통한 메모리 어레이(312)의 액세스를 가능하게 할 수 있다. 이때, 제2 포트 인터페이스(302b)는 제2 상태 신호(R/B2)를 변환하여 비지 상태를 반영할 수 있다.
이후에, 라우터(304-1)(예를 들어 스위치(308-1))는 제2 포트(112b)로부터 수신되는 제어 신호를 제2 디코더(310b)로 전달하고 그리고 대응하는 데이터를 메모리 어레이(312)로 또는 메모리 어레이(312)로부터 라우팅할 수 있다. 제2 디코더(310b)는 제2 제어 신호(CTRL2)를 해석(예를 들어 디코드)하여 수행할 데이터 동작(예를 들어 읽기 동작 또는 쓰기 동작)을 판별하고, 메모리 어레이(312), 제2 페이지 버퍼(314b) 그리고 제2 입출력 버퍼(316b)를 이용하여 데이터 동작을 수행할 수 있다.
따라서, 본 발명의 실시 예들에 따르면, 다중 포트 메모리 장치(300-1)는 제1 및 제2 포트들(112a, 112b) 모두를 통한 동시 메모리 액세스를 수행할 수 있다.
앞서, 도 1 및 도 2의 스토리지 노드들(100, 100-1)의 동작이 다중 포트 메모리 장치(300)를 참조하여 설명되었으나 본 발명은 한정되지 않는다. 즉, 도 1 및 도 2의 실시 예들에서, 다중 포트 메모리 장치(300)는 다중 포트 메모리 장치(300-1)로 대체될 수 있다.
도 5는 본 발명의 실시 예들에 따른 다중 포트(예를 들어 듀얼 포트) 메모리 장치들(300 또는 300-1)에서 데이터 전송을 수행하기 위한 프로세스(S500)의 순서도이다.
S510 동작에서, 다중 포트 메모리 장치(300 또는 300-1)(예를 들어 제1 포트 인터페이스(302a)는 컨트롤러(104)로부터 제1 포트(112a)를 통해 제1 데이터 전송 요청을 가리키는 제1 제어 신호(CTRL1)를 수신할 수 있다.
S520 동작에서, 다중 포트 메모리 장치(300 또는 300-1)(예를 들어 라우터(306 또는 306-1))는 제1 포트(112a)를 통한 제1 데이터 전송을 활성화하고 그리고 제2 포트(112b)를 통한 메모리 액세스를 차단할 수 있다. 예시적으로, 다중 포트 메모리 장치(300)(예를 들어 제1 포트 인터페이스(302a))는 제1 및 제2 포트들(112a, 112b)로부터 비지 상태를 가리키는 제1 및 제2 상태 신호들(R/B1, R/B2)을 전송할 수 있다. 다른 예로서, 다중 포트 메모리 장치(300-1)(예를 들어 제1 포트 인터페이스(302a))는 제1 포트(112a)로부터 비지 상태를 가리키는 제1 상태 신호(R/B1)를 전송하고 그리고 제2 포트(112b)로부터 레디 상태를 가리키는 제2 상태 신호(R/B2)를 전송할 수 있다.
S530 동작에서, 다중 포트 메모리 장치(300 또는 300-1)(예를 들어 디코더(310 또는 310a)는 제1 제어 신호(CTRL1)를 디코드하여 제1 데이터 요청을 식별할 수 있다. S540 동작에서, 다중 포트 메모리 장치(300 또는 300-1)는 식별된 제1 데이터 요청에 기반하여 제1 포트(112a)를 통해 메모리 어레이(312)로의 또는 메모리 어레이(312)로부터의(컨트롤러(104)로의 또는 컨트롤러(104)로부터의) 제1 데이터 전송을 시작할 수 있다.
도 6은 본 발명의 실시 예들에 따른 제1 데이터 전송이 이미 연관된 다중 포트(예를 들어 듀얼 포트) 메모리 장치(300-1)에서 제2 데이터 전송을 수행하기 위한 프로세스(S600)의 순서도이다.
S610 동작에서, 다중 포트 메모리 장치(300-1)는 제1 포트(112a)를 통해 컨트롤러(104)로부터의 제1 데이터 전송을 처리하는 것에 연관되어 있으며, 다중 포트 메모리 장치(300-1)(예를 들어 제2 포트 인터페이스(302b))는 제2 포트(112b)를 통해 컨트롤러(104)로부터의 제2 데이터 전송 요청을 가리키는 제2 제어 신호(CTRL2)를 수신할 수 있다.
S620 동작에서, 다중 포트 메모리 장치(300-1)(예를 들어 제2 디코더(310b))는 제2 제어 신호(CTRL2)를 디코드하여 제2 데이터 요청을 식별할 수 있다.
S630 동작에서, 다중 포트 메모리 장치(300-1)(예를 들어 라우터(304-1))는 제2 데이터 전송의 메모리 액세스가 제1 데이터 전송의 메모리 액세스와 중복되는지 판별한다.
메모리 액세스에 중복이 없는 것으로 판별되면(즉 제1 및 제2 데이터 요청들이 메모리 어레이(312)의 메모리의 동일 페이지들을 액세스하지 않으면), S640 동작에서, 다중 포트 메모리 장치(300-1)(예를 들어 라우터(304-1))는 제1 포트(112a)가 제1 데이터 전송을 처리하는 데에 연관되어 있어도 제2 포트(112b)를 통한 제2 데이터 전송을 가능하게 한다. 이후에, S650 동작에서, 다중 포트 메모리 장치(300-1)(예를 들어 라우터(304-1))는 식별된 제2 데이터 요청에 기반하여 제2 포트(112b)를 통한 다중 포트 메모리 장치(300-1)의 메모리 어레이(312)로의 또는 메모리 어레이(312)부터의(컨트롤러(104)로의 또는 컨트롤러(104)로부터의) 제2 데이터 전송을 시작한다. 실시 예로서, 다중 포트 메모리 장치(300-1)(예를 들어 제2 포트 인터페이스(302b))는 제2 포트(112b)로부터 비지 상태를 가리키는 제2 상태 신호(R/B2)를 전송할 수 있다.
S630 동작에서 제2 데이터 요청의 메모리 액세스가 제1 데이터 요청의 메모리 요청과 중복되는 것으로 판별되면(즉 제1 및 제2 데이터 요청들이 메모리 어레이(312)의 메모리의 적어도 하나의 공통 페이지를 액세스하면), S660 동작에서, 다중 포트 메모리 장치(300-1)(예를 들어 라우터(304-1))는 제1 포트(112a)를 통한 제1 데이터 전송이 완료될 때까지 제2 데이터 전송을 대시키실 수 있다. 제1 데이터 전송이 완료된 후에, S670 동작에서, 다중 포트 메모리 장치(300-1)(예를 들어 라우터(304-1))는 식별된 제2 데이터 요청에 기반하여 제2 포트(112b)를 통한 다중 포트 메모리 장치(300-1)의 메모리 어레이(312)로의 또는 메모리 어레이(312)부터의(컨트롤러(104)로의 또는 컨트롤러(104)로부터의) 제2 데이터 전송을 시작한다.
제1 및 제2 포트 인터페이스들(302a, 302b), 라우터(304 또는 304-1), 그리고 디코더(310, 310a 또는 310b), 그리고 일반적으로 다중 포트 메모리 장치(300 또는 300-1)는 적절한 하드웨어(예를 들어 ASIC), 펌웨어, 소프트웨어 또는 소프트웨어, 펌웨어 및 하드웨어의 적절한 조합으로 구현될 수 있다. 예를 들어, 제1 및 제2 포트 인터페이스들(302a, 302b), 라우터(304 또는 304-1), 그리고 디코더(310, 310a 또는 310b)와 같은 다중 포트 메모리 장치(300 또는 300-1)의 다양한 구성 요소들은 하나의 집적 회로 칩 또는 별도의 집적 회로 칩들로 형성될 수 있다. 또한, 다중 포트 메모리 장치(300 또는 300-1)의 다양한 구성 요소들은 하나 또는 그보다 만은 프로세서들에서 실행되며 여기에 설명된 다양한 기능들을 수행하기 위해 컴퓨터 프로그램 명령들을 실행하고 다른 시스템 구성들과 상호 작용하는 하나 또는 그보다 많은 컴퓨팅 장치들의 프로세스 또는 쓰레드일 수 있다. 컴퓨터 프로그램 명령들은 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 이용한 컴퓨팅 장치에서 구현되는 메모리에 저장될 수 있다.
후술되는 청구 범위에서, 프로세서 및 프로세서 메모리는 제1 및 제2 포트 인터페이스들(302a, 302b), 라우터(304 또는 304-1), 그리고 디코더(310, 310a 또는 310b)의 통합체를 나타낸다.
제1, 제2, 제3 등의 용어들이 다양한 원소들, 구성 요소들, 영역들, 계층들 또는 섹션들을 설명하는 데에 사용되지만, 이러한 원소들, 구성 요소들, 영역들, 계층들, 또는 섹션들은 이 용어들에 의해 한정되지 않음이 이해될 것이다. 이러한 용어들은 하나의 원소, 구성 요소, 영역, 계층 또는 섹션을 다른 원소, 구성 요소, 영역, 계층 또는 섹션과 구별하기 위해 사용된다. 따라서, 제1 원소, 구성 요소, 영역, 계층 또는 섹션은 본 발명의 기술적 사상으로부터 멀어지지 않으면서 제2 원소, 구성 요소, 영역, 계층 또는 섹션으로 명명될 수 있다.
계층이 두 개의 계층들 사이에 있다고 참조될 때, 이는 두 계층들 사이의 유일한 계층일 수 있으며 또는 하나 또는 그보다 많은 중간 계층들이 존재할 수 있음이 이해될 것이다.
여기에서 사용되는 용어는 구체적인 실시 예들을 설명하기 위한 목적이며, 본 발명의 기술적 사상을 한정하는 의도로 사용되지 않는다. 여기에서 사용되는 바와 같이, "포함하다" 또는 "포함하는"의 용어들은 언급된 특징들, 정수들, 단계들, 동작들, 원소들 또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특징들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 또는 이들의 그룹들의 추가 또는 존재를 배제하지 않는다. 여기에서 사용되는 바와 같이, "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 목록의 아이템들의 임의의 그리고 모든 조합들을 포함한다. "적어도 하나"와 같은 표현이 원소들의 목록에 선행한 때에, 전체 목록의 원소들에 적용되며 목록의 개별 원소들에 적용되지 않는다. 또한, "수 있다"의 사용은 본 발명의 기술적 사상의 실시 예들을 설명할 때 본 발명의 기술적 사상의 하나 또는 그보다 많은 실시 예들을 참조한다. 또한, "예"의 용어는 예시 또는 설명을 참조한다.
원소 또는 계층이 다른 원소 또는 계층의 "위에". "연결", "결합" 또는 "인접"한 때에, 이는 다른 원소 또는 계층의 직접 위에, 연결, 결합 또는 인접하거나 또는 하나 또는 그보다 많은 중간 원소들 또는 계층들이 존재할 수 있다. 원소 또는 계층이 다른 원소 또는 계층의 "직접 위에", "직접 연결", "직접 결합" 또는 "가장 인접"한 것으로 참조될 때에, 중간 원소들 또는 계층들은 존재하지 않는다.
여기에서 사용되는 바와 같이, "실질적으로", "약", 그리고 이와 유사한 용어들은 추정의 용어로 사용되고 정도의 용어로 사용되지 않는다. 그리고 이 분야에 숙련된 자들에 의해 인지될 수 있는 측정된 또는 계산된 값들의 내재적인 변경이 포함된다.
여기에서 사용되는 "사용"의 용어는 "활용"과 유사한 것으로 여겨진다.
본 발명이 도시된 실시 예들을 구체적으로 참조하여 상세하게 설명되었으나, 설명된 실시 예들은 완전한 것을 의도하지 않으며 본 발명의 범위를 기재된 정확한 형태로 한정하지 않는다. 후술되는 청구 범위 및 그와 동등한 것들에 따라, 본 발명이 속한 분야에 숙련된 자들은 설명된 구조들 및 집합 및 동작의 방법에서 개조 및 변경이 본 발명의 범위, 기술적 사상 및 동작 원리로부터 유의하게 멀어지지 않으면서 가능함이 이해될 것이다.
10; 시스템
100, 100-1; 스토리지 노드
102; 호스트 인터페이스
104, 104-1; 컨트롤러
106; 휘발성 메모리
108; 컨트롤러 채널
110; 불휘발성 메모리
112a; 제1 포트
112b; 제2 포트
200; 호스트
300; 다중 포트 메모리 장치
302a; 제1 포트 인터페이스
302b; 제2 포트 인터페이스
304, 304-1; 라우터
306, 306-1; 중재자
308, 308-1; 스위치
310, 310a, 310b; 디코더
312; 메모리 어레이
314, 314a, 314b; 페이지 버퍼
316a; 제1 입출력 버퍼
316b; 제2 입출력 버퍼

Claims (10)

  1. 컨트롤러와 통신하는 다중 포트 메모리 장치에 있어서:
    상기 컨트롤러에 의해 제공되는 데이터를 저장하는 메모리 어레이;
    제1 컨트롤러 채널을 통해 상기 컨트롤러와 결합되는 제1 포트;
    제2 컨트롤러 채널을 통해 상기 컨트롤러와 결합되는 제2 포트;
    프로세서; 그리고
    상기 프로세서에 대한 프로세서 메모리를 포함하고,
    상기 프로세서 메모리는 상기 프로세서에 의해 실행되는 때에 상기 프로세서가:
    상기 제1 컨트롤러 채널로부터 수신되는 제1 제어 신호 또는 상기 제2 컨트롤러 채널로부터 수신되는 제2 제어 신호에 응답하여 상기 제1 포트 또는 상기 제2 포트를 통한 데이터 전송을 활성화하고;
    상기 수신된 제1 및 제2 제어 신호들 중 적어도 하나를 디코드하여 상기 메모리 어레이의 읽기 또는 쓰기 동작을 포함하는 수행할 데이터 동작을 식별하고; 그리고
    상기 식별된 데이터 동작을 실행하는 것을 수행하도록 하는 명령들을 저장하는 다중 포트 메모리 장치.
  2. 제1항에 있어서,
    상기 명령들은 상기 프로세서가:
    상기 제1 포트 또는 상기 제2 포트를 통한 데이터 전송이 활성화되는 것에 응답하여, 상기 제1 포트를 통해 상기 컨트롤러로 제1 상태 신호를 전송하고 그리고 상기 제2 포트를 통해 상기 컨트롤러로 제2 상태 신호를 전송하는 것을 더 수행하도록 하고,
    상기 제1 및 제2 상태 신호들은 상기 제1 및 제2 포트들 각각의 비지 상태를 가리키는 다중 포트 메모리 장치.
  3. 제1항에 있어서,
    상기 명령들은 상기 프로세서가:
    상기 제1 포트를 통한 데이터 전송을 활성화하는 것에 응답하여 상기 제1 포트를 통해 상기 컨트롤러로 제1 상태 신호를 전송하고; 그리고
    상기 제2 포트를 통한 데이터 전송을 활성화하는 것에 응답하여 상기 제2 포트를 통해 상기 컨트롤러로 제2 상태 신호를 전송하는 것을 더 수행하도록 하는 다중 포트 메모리 장치.
  4. 제1항에 있어서,
    상기 명령들은 상기 프로세서가:
    상기 제1 포트를 통한 액세스를 활성화하는 것에 응답하여 상기 제2 포트를 통한 액세스를 차단하는 것을 더 수행하도록 하는 다중 포트 메모리 장치.
  5. 제1항에 있어서,
    상기 식별된 데이터 동작은 상기 제1 제어 신호에 대응하는 제1 데이터 전송 요청이고,
    상기 명령들은 상기 프로세서가:
    상기 제1 데이터 전송 요청을 처리하는 것에 연관되어 있는 동안 상기 제2 제어 신호를 디코드하여 제2 데이터 전송 요청을 식별하고;
    상기 제2 데이터 전송 요청의 메모리 액세스가 상기 제1 데이터 전송 요청의 메모리 액세스와 중복되지 않는지 판별하고;
    중복이 없음을 판별하는 것에 응답하여 상기 제2 포트를 통한 제2 데이터 전송을 활성화하고; 그리고
    상기 식별된 제2 데이터 전송 요청에 따라 상기 메모리 어레이의 상기 제2 데이터 전송을 시작하는 단계를 더 수행하도록 하는 다중 포트 메모리 장치.
  6. 제1항에 있어서,
    상기 식별된 데이터 동작은 상기 제1 제어 신호에 대응하는 제1 데이터 전송 요청이고,
    상기 명령들은 상기 프로세서가:
    상기 제1 데이터 전송 요청을 처리하는 것에 연관되어 있는 동안 상기 제2 제어 신호를 디코드하여 제2 데이터 전송 요청을 식별하고,
    상기 제2 데이터 전송 요청의 메모리 액세스가 상기 제1 데이터 전송 요청의 메모리 액세스와 중복되는지 판별하고; 그리고
    상기 중복의 판별에 기반하여 상기 제1 데이터 전송 요청의 처리가 완료될 때까지 상기 제2 데이터 전송 요청을 대기시키는 것을 더 수행하도록 하는 다중 포트 메모리 장치.
  7. 스토리지 노드에 있어서:
    행들로 배열되는 복수의 다중 포트 메모리 장치들; 그리고
    컨트롤러를 포함하고,
    상기 복수의 다중 포트 메모리 장치들 각각은 제1 및 제2 포트를 갖고, 상기 제1 및 제2 포트들 각각은 데이터 전송 요청들을 수신하도록 구성되고,
    상기 컨트롤러는 복수의 컨트롤 채널들을 통해 상기 복수의 다중 포트 메모리 장치들의 데이터 전송을 수행하도록 구성되고,
    상기 복수의 다중 포트 메모리 장치들 각각의 상기 제1 및 제2 포트들은 상기 복수의 컨트롤 채널들 중 두 개와 결합되는 스토리지 노드.
  8. 제7항에 있어서,
    상기 복수의 컨트롤 채널들의 수는 상기 다중 포트 메모리 장치들의 행들의 수보다 크고,
    상기 다중 포트 메모리 장치들의 행들 중 하나의 행의 제2 포트는 상기 복수의 컨트롤 채널들 중에서 상기 다중 포트 메모리 장치들의 행들의 연속한 행의 동일한 채널에 결합되는 스토리지 노드.
  9. 제7항에 있어서,
    상기 복수의 컨트롤 채널들의 수는 상기 다중 포트 메모리 장치들의 행들의 수와 동일하고,
    상기 복수의 컨트롤 채널들의 첫 번째 채널은 상기 다중 포트 메모리 장치들의 행들의 첫 번째 행 및 상기 다중 포트 메모리 장치들의 행들의 마지막 행 모두와 결합되는 스토리지 노드.
  10. 다중 포트 메모리 장치에서 데이터 전송을 수행하는 방법에 있어서:
    스토리지 노드의 컨트롤러로부터의 제1 데이터 전송 요청을 가리키는 제1 제어 신호를 상기 다중 포트 메모리 장치의 제1 포트를 통해 수신하는 단계;
    상기 제1 포트를 통한 제1 데이터 전송을 활성화하고 상기 다중 포트 메모리 장치의 제2 포트를 통한 메모리 액세스를 차단하는 단계;
    상기 제1 제어 신호를 디코드하여 상기 제1 데이터 전송 요청을 식별하는 단계; 그리고
    상기 식별된 제1 데이터 전송 요청에 따라 상기 다중 포트 메모리 장치의 메모리 어레이의 상기 제1 데이터 전송을 시작하는 단계를 포함하는 방법.
KR1020160100897A 2016-02-09 2016-08-08 다중 포트 메모리 장치 및 그것을 이용한 방법 KR102351671B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662293293P 2016-02-09 2016-02-09
US62/293,293 2016-02-09
US15/097,234 2016-04-12
US15/097,234 US10255955B2 (en) 2016-02-09 2016-04-12 Multi-port memory device and a method of using the same

Publications (2)

Publication Number Publication Date
KR20170094482A true KR20170094482A (ko) 2017-08-18
KR102351671B1 KR102351671B1 (ko) 2022-01-14

Family

ID=59496424

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160100897A KR102351671B1 (ko) 2016-02-09 2016-08-08 다중 포트 메모리 장치 및 그것을 이용한 방법

Country Status (2)

Country Link
US (4) US10255955B2 (ko)
KR (1) KR102351671B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017208836A1 (de) 2017-05-24 2018-11-29 Wago Verwaltungsgesellschaft Mbh Statussignalausgabe
US10949117B2 (en) * 2018-09-24 2021-03-16 Micron Technology, Inc. Direct data transfer in memory and between devices of a memory module
US11163473B2 (en) 2018-11-19 2021-11-02 Micron Technology, Inc. Systems, devices, techniques, and methods for data migration
US11182090B2 (en) 2018-11-19 2021-11-23 Micron Technology, Inc. Systems, devices, and methods for data migration
US11256437B2 (en) * 2018-11-19 2022-02-22 Micron Technology, Inc. Data migration for memory operation
US10782911B2 (en) 2018-11-19 2020-09-22 Micron Technology, Inc. Data migration dynamic random access memory
US11726659B2 (en) * 2021-03-10 2023-08-15 Samsung Electronics Co., Ltd. Systems, methods, and devices for data storage with specified data transfer rate

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010667A1 (en) * 2002-07-11 2004-01-15 International Business Machines Corporation Apparatus and method for load balancing of fixed priority threads in a multiple run queue environment
US7962698B1 (en) * 2005-10-03 2011-06-14 Cypress Semiconductor Corporation Deterministic collision detection
US20110320698A1 (en) * 2010-06-25 2011-12-29 Qualcomm Incorporated Multi-Channel Multi-Port Memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381674B2 (en) * 1997-09-30 2002-04-30 Lsi Logic Corporation Method and apparatus for providing centralized intelligent cache between multiple data controlling elements
US7433712B2 (en) 2003-02-06 2008-10-07 Modu Ltd. Multi-access solid state memory devices and a telephone utilizing such
US7831758B2 (en) * 2007-12-21 2010-11-09 Intel Corporation Accelerating input/output (IO) throughput on solid-state memory-based mass storage device
US8762620B2 (en) 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
JP2009199199A (ja) 2008-02-20 2009-09-03 Hitachi Ltd ストレージシステム及びそのデータライト方法
JP5238791B2 (ja) * 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
US8589723B2 (en) 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
JP5898790B2 (ja) 2013-01-23 2016-04-06 株式会社日立製作所 PCI−Express接続ソリッドステートドライブを適用したストレージ装置
GB2510180A (en) 2013-01-29 2014-07-30 Ibm Selective restoration of data from non-volatile storage to volatile memory
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US9887008B2 (en) 2014-03-10 2018-02-06 Futurewei Technologies, Inc. DDR4-SSD dual-port DIMM device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010667A1 (en) * 2002-07-11 2004-01-15 International Business Machines Corporation Apparatus and method for load balancing of fixed priority threads in a multiple run queue environment
US7962698B1 (en) * 2005-10-03 2011-06-14 Cypress Semiconductor Corporation Deterministic collision detection
US20110320698A1 (en) * 2010-06-25 2011-12-29 Qualcomm Incorporated Multi-Channel Multi-Port Memory

Also Published As

Publication number Publication date
US20190130951A1 (en) 2019-05-02
US10255955B2 (en) 2019-04-09
US20170229159A1 (en) 2017-08-10
US20240087620A1 (en) 2024-03-14
US20210090619A1 (en) 2021-03-25
US10867643B2 (en) 2020-12-15
US11837319B2 (en) 2023-12-05
KR102351671B1 (ko) 2022-01-14

Similar Documents

Publication Publication Date Title
KR20170094482A (ko) 다중 포트 메모리 장치 및 그것을 이용한 방법
US9135190B1 (en) Multi-profile memory controller for computing devices
KR101011336B1 (ko) 목표 디스크에 액세스하기 위한 방법, 디스크 용량을 확장하는 시스템 및 디스크 어레이
US6675253B1 (en) Dynamic routing of data across multiple data paths from a source controller to a destination controller
US8209497B2 (en) Multi-port memory and system using the same
US20140104967A1 (en) Inter-memory data transfer control unit
US10169257B2 (en) Module based data transfer
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US10437747B2 (en) Memory appliance couplings and operations
US11556279B2 (en) System device, and method for memory interface including reconfigurable channel
CN112368676A (zh) 处理数据的方法和设备
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US8164936B2 (en) Switched memory devices
US11531618B2 (en) Memory modules and methods of operating same
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
US20230049427A1 (en) Method for external devices accessing computer memory
JP7149987B2 (ja) データ伝送装置、データ処理システム、データ処理方法及び媒体
JP4391200B2 (ja) ディスクアレイ装置及びディスクアレイ装置の制御方法
US20230222062A1 (en) Apparatus and method for cache-coherence
US12008270B2 (en) System, device, and method for memory interface including reconfigurable channel
US10459842B1 (en) Data storage system with configurable prefetch buffers
US20240134806A1 (en) Storage system
US20230222067A1 (en) Apparatus and method for cache-coherence
KR101910619B1 (ko) 시스템 칩 설계를 위한 효율적인 온칩버스 구조
US20180173624A1 (en) Method and apparatus for data access in storage system

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant