KR20120014938A - 메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들 - Google Patents

메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들 Download PDF

Info

Publication number
KR20120014938A
KR20120014938A KR1020127000024A KR20127000024A KR20120014938A KR 20120014938 A KR20120014938 A KR 20120014938A KR 1020127000024 A KR1020127000024 A KR 1020127000024A KR 20127000024 A KR20127000024 A KR 20127000024A KR 20120014938 A KR20120014938 A KR 20120014938A
Authority
KR
South Korea
Prior art keywords
host
memory
command
memory device
data
Prior art date
Application number
KR1020127000024A
Other languages
English (en)
Other versions
KR101371936B1 (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 KR20120014938A publication Critical patent/KR20120014938A/ko
Application granted granted Critical
Publication of KR101371936B1 publication Critical patent/KR101371936B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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

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)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 장치로 호스트 메모리 억세스를 제어하는 방법들, 시스템들, 호스트 제어기들 및 메모리 장치들을 포함한다. 메모리 장치로 호스트 메모리 액세스를 제어하는 일 실시예는 호스트로부터 적어도 하나의 명령을 수신하는 단계와 상기 메모리 장치로 상기 적어도 하나의 명령의 실행을 제어하는 단계를 포함한다.

Description

메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들{METHODS FOR CONTROLLING HOST MEMORY ACCESS WITH MEMORY DEVICES AND SYSTEMS}
본 발명은 반도체 메모리 장치, 방법 및 시스템에 관한 것으로서, 특히 메모리 장치에 의해 제어되는 호스트 메모리 액세스에 관한 것이다.
메모리 장치들은 통상적으로 컴퓨터들, 개인 정보 단말기(PDA : personal digital assistant)들, 디지털 카메라들, 휴대전화기들이나 기타 다른 종류의 전자기기들에 내부적인 반도체회로로서 집적되거나 외부적으로 탈착 가능한 형태로 제공된다. 이러한 메모리 장치들에는 서로 다른 많은 종류들이 있는데, 예를 들면 랜덤 억세스 메모리(RAM : random-access memory), 독출 전용 메모리(ROM), 디램 (DRAM), 에스디램(SDRAM), 상변화 램(PCRAM) 및 플래시 메모리 등이 있다.
플래시 메모리 장치들은 넓은 범위의 전자 응용부문에서 비휘발성 메모리로서 이용된다. 플래쉬 메모리 장치들은 통상적으로 단일 트랜지스터 메모리 셀(one-transistor memory cell)을 사용하여 메모리 밀도와 신뢰성을 높이고 전력소모를 줄인다.
메모리 시스템에서는 다양한 형태의 메모리들이 사용될 수 있다. 이들 여러 종류의 메모리들은 호스트 장치 또는 호스트 시스템과 같은 호스트를 위한 메모리를 제공하기 위하여 조합하여 사용될 수 있다. 예를 들면, 플래시 메모리는 메모리 시스템에 내장될 수 있다. 플래시 메모리는 내부 메모리로서, 또는 USB 연결과 같은 인터페이스를 통하여 메모리 시스템에 연결될 수 있는 탈착형 메모리로서 메모리 시스템의 일부가 될 수 있다.
하나의 시스템은 호스트 시스템, 호스트 메모리 및 다수의 외부 메모리 장치들을 포함할 수 있다. 이러한 호스트 시스템은 다수의 프로세서들, 호스트 제어기, 호스트 제어기에 위치한 호스트 제어기 메모리, 그리고 다수의 내부 메모리 장치들을 가질 수 있다. 호스트 시스템은 호스트 제어기 및/또는 다수의 호스트 프로세서들을 통하여 메모리 장치들과 상호작용함으로써 내장 및/또는 외장 메모리 장치들을 사용할 수 있다. 호스트 제어기 및/또는 다수의 호스트 프로세서들은 그러한 메모리 장치들과 통신하여 메모리 장치들에서 호스트로 데이터를 읽거나 호스트에서 메모리 장치들로 데이터를 쓰는 등의 동작들을 수행할 수 있다. 데이터의 읽기 및 쓰기를 제어하는 명령들은 호스트에 의해 만들어질 수 있다. 호스트 제어기 및/또는 다수의 호스트 프로세서들은 명령들의 실행을 제어하는 하드웨어를 구비할 수 있다. 호스트 제어기 및/또는 다수의 호스트 프로세서들이 명령들의 실행을 제어하는 하드웨어를 구비한 경우에, 호스트 시스템은 메모리 장치들의 상태를 관리하고 유지한다.
도 1은 본 발명의 하나 이상의 실시예들에 따른 메모리의 블럭도를 예시한다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 호스트 메모리의 블럭도를 예시한다.
도 3는 본 발명의 하나 이상의 실시예들에 따른 데이터 전송 메시지의 블럭도를 예시한다.
본 발명은 메모리 장치에 의해 호스트 메모리 액세스를 제어하는 방법들, 장치들 및 시스템들을 포함한다. 메모리 장치에 의해 호스트 메모리 액세스를 제어하는 일실시예는 호스트로부터 적어도 하나의 명령을 수신하고 상기 메모리 장치에 의해 적어도 하나의 명령의 실행을 제어하는 것을 포함한다.
다음의 본 발명의 상세한 설명에서, 본 명세서의 일부를 구성하는 첨부 도면이 참조되며, 그 도면에서 예시에 의하여 본 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는지가 도시된다. 이러한 실시예들은 당업계의 기술분야에서 통상의 기술을 가진 자들이 본 발명의 실시예들을 실시할 수 있도록 충분히 상세하게 기술되며, 다른 실시예들이 이용될 수 있으며, 본 발명의 범위를 벗어나지 않고 공정상, 전기적 및/또는 구조적인 변경이 이루어질 수 있다는 것을 알아야 한다. 본 명세서에서 사용된 바와 같이, 특히 도면상의 부호들에 관련하여 지시어 "N"은 그렇게 지정된 다수의 특정한 특징이 본 발명의 하나 이상의 실시예에 포함될 수 있음을 나타낸다. 그 지시어들은 동일하거나 다른 수의 특정한 특징들을 대표할 수 있다.
본 명세서에 첨부된 도면들은, 첫 번째 숫자 또는 숫자들이 도면번호에 해당하고 나머지 숫자들은 도면에서 부품 또는 구성품을 식별하는 번호 부여규칙을 따른다. 다른 도면들 사이에서 유사한 부품들 또는 구성품들은 유사한 숫자들을 사용하여 식별될 수 있다. 예를 들면, 118은 도 1에서 부품 "18"을 참조할 수 있고, 유사한 부품은 도 2에서 "218"로서 참조될 수 있다. 또한, 살펴서 알게 되는 바와 같이, 본 명세서에서 다양한 실시예들에서 보인 부품들은 본 발명의 추가 실시예들을 다수 제공하기 위하여 추가, 교환 및/또는 제거될 수 있다. 아울러, 살펴서 알게 되는 바와 같이, 도면들에 도시된 부품들의 비율과 상대적 축척은 본 발명의 실시예들을 예시하기 위한 것일 뿐이며, 제한하는 의미에서 보아서는 안 된다.
도 1은 본 발명의 하나 이상의 실시예들에 따른 메모리 시스템(100)의 블럭도를 예시한다. 도 1에 호스트(110)가 도시되어 있다. 하나 이상의 실시예들에서, 호스트(110)는 다른 컴퓨팅 장치 유형들 중에서, 특히 퍼스널 컴퓨터와 같은 컴퓨팅장치가 될 수 있다. 호스트(110)의 예들은, 다른 예들 중에서, 특히 랩톱 컴퓨터, 퍼스널 컴퓨터, 모바일 폰, 디지털 카메라, 디지털 기록/재생장치, PDA, 메모리 카드리더 및 인터페이스 허브를 포함할 수 있다. 도 1의 호스트(110)는 기타 도시되지 않은 다른 컴퓨팅 장치 부품들 중에서, 호스트 제어기(112), 호스트 프로세서(114), 호스트 메모리 제어기(116) 및 호스트 메모리(118-1 및 118-N)를 포함한다. 호스트 제어기(112)는 트랜잭션 층, 링크 층, 및/또는 물리 층을 포함할 수 있으며, 호스트 메모리 제어기(116)를 통하여 호스트 메모리(118-1, 118-2,..., 118-N)에 연결될 수 있다. 또한, 도 1에서, 호스트 제어기(112)는 버스(120)를 통하여 메모리 장치들(130-1, 130-2,..., 130-N)에 연결된다.
하나 이상의 실시예들에서, 호스트 제어기(112)는 다수의 메모리 장치들(130-1, 130-2,..., 130-N)과 호스트(110) 사이에서 정보를 전달하는데 사용될 수 있다. 당 업계의 기술분야에서 통상의 기술을 가진 자는 "프로세서"가, 병렬 처리 시스템, 다수의 코프로세서들(coprocessors) 등과 같은, 하나 이상의 프로세서들을 의미할 수 있다는 것을 살펴서 알게 될 것이다.
하나 이상의 실시예들에서는, 호스트 제어기(112)가 표준화된 인터페이스를 구현하기 위하여 연결될 수 있다. 예를 들면, 메모리 장치들(130-1, 130-2,..., 130-N)이 메모리 시스템에서 데이터 저장용으로 사용될 때, 호스트 제어기는 다른 인터페이스들 중에서 특히, SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), USB(universal serial bus) 및/또는 SCSI(small computer system interface)를 구현할 수 있다. 그러나, 일반적으로, 호스트 제어기(112)는 메모리 장치들(130-1, 130-2,..., 130-N)과, 호스트(110)와, 그리고 호스트 메모리(118-1, 118-2,..., 118-N)와 같은 다른 장치들 사이에서 제어, 어드레스, 데이터 및 기타 신호들을 보내는 인터페이스를 구현하도록 연결될 수 있다.
하나 이상의 실시예들에서, 메모리 장치들(130-1, 130-2,..., 130-N)은, 예를 들면, 다른 동작 명령들 중에서, 특히 호스트(110)로부터 메모리 장치들(130-1, 130-2,..., 130-N)로 전달되는 읽기, 쓰기 및/또는 소거 명령들을 실행함으로써 동작들을 촉진하는데 사용될 수 있는 하나 이상의 메모리 장치 제어기들을 포함할 수 있다. 메모리 장치들(130-1, 130-2,..., 130-N)은 개별적으로 버스(120)에 연결될 수 있다. 일부 실시예들에서는, 메모리 장치들(130-1, 130-2,..., 130-N)이 버스에 연결된 메모리 장치들 중 하나에 연쇄적으로 함께 연결될 수 있다. 하나 이상의 실시예들에서, 하나 이상의 메모리 장치 제어기들은 호스트 시스템(110)과 메모리 장치들(130-1, 130-2,..., 130-N) 사이에 변환 계층(translation layer)을 제공할 수 있다. 따라서, 하나의 메모리 장치 제어기는 메모리 장치들(130-1, 130-2,..., 130-N)의 입출력(I/O) 커넥터(도 1에는 미도시됨)를 선택적으로 연결하여 적절한 시간에 적정한 입출력(I/O) 연결부에서 적정한 신호를 수신할 수 있을 것이다. 유사하게, 호스트(110)와 메모리 장치들(130-1, 130-2,..., 130-N) 사이의 통신 프로토콜은 메모리 장치들(130-1, 130-2,..., 130-N)에 대한 액세스를 위해 필요한 것과 다를 수도 있다. 그러면 메모리 장치 제어기들은 호스트(110)로부터 수신된 명령 순서들을 적정한 명령 순서들로 변환하여 메모리 장치들(130-1, 130-2,..., 130-N)에 대한 원하는 액세스를 달성할 수 있을 것이다. 각각의 변환은 명령 순서들 이외에도 신호 전압레벨들의 변경들을 더 포함할 수 있다.
도 1의 실시예들은 본 발명의 실시예들을 가리지 않도록 예시되지 않은 추가 회로를 포함할 수 있다. 예를 들면, 메모리 장치들(130-1, 130-2,..., 130-N)은 입출력(I/O) 회로를 통하여 입출력(I/O) 커넥터들 상에 제공된 어드레스 신호들을 래치(latch)하기 위한 어드레스 회로를 포함할 수 있다. 어드레스 신호들은 메모리 장치들(130-1, 130-2,..., 130-N)에 액세스하기 위하여 행 디코더(row decoder)와 열 디코더(column decoder)에 의하여 수신되고 디코딩될 수 있다. 당 업계의 기술분야에서 숙련된 기술을 가진 자는 어드레스 입력 커넥터들의 수가 메모리 장치들(130-1, 130-2,..., 130-N)의 밀도와 구조에 좌우된다는 것을 살펴 알게 될 것이다.
하나 이상의 실시예들에서, 호스트 시스템은, 단일 명령 또는 명령 리스트와 같이, 적어도 하나의 명령을 만들 수 있다. 명령 리스트는 두 개 이상의 명령들을 포함할 수 있다. 호스트는 또한 데이터 전송을 위한 데이터 버퍼들을 할당할 수 있으며, 호스트 메모리에서 명령 상태 및 완성 정보를 위한 상태 버퍼들을 할당할 수 있다.
호스트는 버스를 통하여 전송되는 명령 메시지를 통하여 하나 이상의 메모리 장치들에게 명령(들)이 실행될 준비가 되어 있고 데이터 버퍼들 및 상태 버퍼들이 호스트 메모리에 할당되어 있다는 것을 통지할 수 있다. 그 메시지는 명령(들)이 소재한 호스트 메모리 내의 위치(예컨대, 어드레스)를 가리키는 포인터를 또한 포함할 수 있다. 명령(들)이 실행될 준비가 되어 있다는 것을 하나 이상의 메모리 장치들에 통지하는 호스트와 관련하여(예컨대, 호스트가 하나의 명령이 준비되어 있다는 것을 하나의 메모리 장치에 일단 통지하면), 그 호스트는 명령 리스트에 있는 명령(들)의 실행의 제어를 상기 하나 이상의 메모리 장치들에게 넘긴다. 그 호스트는 또한 그 호스트와 상기 하나 이상의 메모리 장치들 사이의 버스의 제어도 넘겨준다.
하나 이상의 실시예들에서, 하나 이상의 메모리 장치들이 호스트 메모리 내에서 명령(들)이 실행될 준비가 되어 있다는 것을 일단 통지받으면, 어떤 한 메모리 장치는, 상기 명령(들)을 가리키는 포인터를 포함하는 데이터 전송 메시지를 호스트 제어기로 전송하고, 전송 크기, 데이터 오프셋 및 데이터 플래그들과 같은 추가정보를 전송함으로써, 메모리 장치가 원할 때 상기 호스트 메모리로부터 상기 명령(들)을 수신할 수 있다. 전송 크기, 데이터 오프셋 및 데이터 플래그들과 같은 추가정보는 호스트 메모리 어드레스 컨텍스트(context)라고 명명할 수 있다. 전송 크기는 호스트 메모리로부터 메모리 장치로 전송되거나 메모리 장치로부터 호스트 메모리로 전송되는 데이터의 양이다. 데이터 오프셋은 호스트 메모리에서 데이터의 실제 위치를 가리키는 포인터와 함께 사용되는 값이다. 오프셋은 호스트 메모리 파일 할당 방법에 맞추도록 메모리 장치에 의해서 설정되고 수정될 수 있다. 데이터 플래그들은 데이터 전송의 실행과 연관된 기타 전송 특징들 중에서, 특히 데이터 전송 방향과 같은 데이터 전송의 특징을 식별하는데 사용될 수 있다. 호스트 제어기는 호스트 메모리 어드레스 컨텍스트를 처리하고, 명령 또는 명령 리스트와 같은 요청된 데이터를 호스트 메모리로부터 인출하여 그것을 하나 이상의 메모리 장치들로 전송할 것이다.
하나 이상의 실시예들에서, 하나 이상의 메모리 장치들은 명령(들)을 해석할 수 있고, 데이터를 인출하거나 호스트 메모리에 전송하는 호스트 제어기를 통하여 호스트 메모리로의 및/또는 호스트 메모리로부터의 데이터 전송을 초래하는 일련의 데이터 전송 메시지들을 전송함으로써 상기 명령(들)의 실행을 제어할 수 있다.
이러한 데이터 전송 메시지들은 호스트 메모리 내의 데이터 위치를 가리키는 호스트 메모리 어드레스 컨텍스트를 포함할 수 있다. 명령 또는 명령 리스트의 실행으로부터 비롯된 데이터 전송은 하나 이상의 메모리 장치들의 제어에 의거한다. 하나 이상의 메모리 장치들은 일정 데이터 전송을 실행하기 위한 개별 장치의 상태 및/또는 능력에 기초하여 데이터 전송의 타이밍, 순서, 우선순위 및 크기를 결정할 수 있다. 하나 이상의 실시예들에서, 장치가 명령(들)의 실행을 제어함으로써, 호스트는 하나 이상의 메모리 장치들의 상태와 리소스(resource)들을 관리하지 않거나, 또는 하나 이상의 메모리 장치들에 대한 데이터 전송을 계획하지 않는다.
하나 이상의 실시예들에서, 명령의 실행이 완료되면, 하나 이상의 메모리 장치들은 호스트로 완료 메시지를 전송할 수 있다. 호스트 제어기는 상기 완료 메시지를 인식할 수 있고, 상기 명령 또는 명령 리스트가 완료되었음을 호스트 프로세서에 통지할 수 있다.
하나 이상의 실시예들에서, 호스트는 명령 또는 명령 리스트가 실행될 준비가 되어 있고 데이터 버퍼들이 시스템 메모리에 할당되어 있다는 것을 나타내는 메시지를 하나 이상의 메모리 장치들로 전송할 수 있다. 호스트로부터 하나 이상의 메모리 장치들로 전송된 메시지는 호스트 메모리에서 명령 위치를 가리킬 수 있는, 불투명한 메모리 포인터 객체(pointer object)와 같은 포인터(pointer)를 포함할 수 있다. 불투명한 메모리 포인터 객체는 메모리 장치들에 의해 해석되지 않은 포인터일 수 있다. 불투명한 메모리 포인터는 호스트와 메모리 장치들 사이에 전송되며, 호스트 메모리에서 데이터 및/또는 명령들의 위치를 식별하는데 사용되는 데이터 전송 메시지들의 일부이다. 불투명한 메모리 포인터는 호스트에 의해 해석된다. 하나 이상의 메모리 장치들은 호스트 메모리로부터 명령(들)을 인출할 수 있다. 각 명령은 호스트 메모리 어드레스 컨텍스트를 포함할 수 있다. 호스트 메모리 어드레스 컨텍스트는, 추가 포인터들과 전송 크기, 그리고 명령을 실행할 때 전송될 데이터를 포함하거나 수신할 데이터 버퍼들에 관한 오프셋 정보를 포함할 수 있다.
하나 이상의 실시예들에서, 하나 이상의 메모리 장치들은 명령(들)을 해석할 수 있다. 각 명령은 예를 들면 호스트 메모리로부터 하나 이상의 메모리 장치들로 전송하는지, 또는 하나 이상의 메모리 장치들로부터 호스트 메모리로 전송하는지와 같은 데이터 전송 방향을 지시할 것이다. 하나 이상의 메모리 장치들은 데이터 전송을 초기화하기 위하여 호스트에 추가 데이터 전송 메시지들을 전송함으로써 명령(들)을 실행할 수 있다. 추가 데이터 전송 메시지들은 호스트 메모리 어드레스 컨텍스트를 포함할 것이다. 일부 실시예들에서, 하나 이상의 메모리 장치들이 호스트 메모리로 데이터를 전송하고 있는 경우, 그 데이터는 메시지 내의 호스트 메모리 어드레스 컨텍스트를 따를 것이다. 일부 실시예들에서, 하나 이상의 메모리 장치들이 호스트 메모리로부터 데이터를 인출하고 있는 경우, 호스트 제어기는 그 데이터가 따랐던 호스트 메모리 어드레스 컨텍스트와 함께 메시지를 상기 하나 이상의 메모리 장치들로 역전송할 것이다.
하나 이상의 실시예들에서, 명령(들)의 실행과 관련된 모든 데이터 전송이 완료되면, 하나 이상의 메모리 장치들은 명령(들)의 완료를 나타내는 메시지를 전송할 수 있다. 이 메시지는 호스트 시스템 메모리에서 상태 버퍼의 위치를 나타내는 호스트 메모리 어드레스 컨텍스트와 포인터를 포함할 수 있다. 상태 버퍼는 호스트 메모리에서 명령(들)의 상태에 관한 데이터를 저장하는 위치가 될 수 있다. 명령(들)이 일단 실행되면, 상태 버퍼는 명령(들)이 완료된 것을 호스트에 나타내는 완료 메시지에 포함된 상태 데이터를 수신한다. 상태 데이터는 완료 메시지의 일부가 될 수 있으며 호스트 메모리 어드레스 컨텍스트를 따를 수 있으며. 호스트 메모리의 상태 버퍼에 위치될 수 있다. 완료 메시지를 수신하고 식별하는 즉시, 호스트 제어기는, 명령(들)이 처리를 완료하였음을 호스트 프로세서에 통지, 예를 들어, 인터럽트(interrupt) 할 것이다. 이제, 상기 하나 이상의 메모리 장치들은 다음 명령(들)을 처리할 준비가 되어 있는 것이다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 호스트 메모리의 블럭도를 예시한다. 하나 이상의 실시예들에서, 호스트 메모리(218)는 호스트에 연결되고 물리적으로 호스트의 외부에 위치한 원격 호스트 메모리가 될 수 있다. 하나 이상의 실시예들에서, 호스트 메모리는 호스트에 위치한 임베디드(embedded) 호스트 메모리가 될 수 있다. 하나 이상의 실시예들에서, 호스트 메모리(218)는 원격 호스트 메모리 및/또는 임베디드 호스트 메모리를 포함할 수 있다.
전술한 바와 같이, 하나 이상의 실시예들에서, 호스트는 호스트 시스템 메모리(218)에서 명령 리스트(202)를 만들 수 있다. 명령 리스트(202)는 두 개 이상의 명령들을 포함할 수 있으며, 각 명령은 명령의 기본 기능인 메모리 어드레스 컨텍스트를 나타내는 기본 명령 기술자(descriptor) 블럭을 포함할 수 있다. 메모리 어드레스 컨텍스트는 전송 방향 및 데이터 버퍼(204)가 직접 액세스인지 또는 간접 액세스인지의 여부를 나타낼 수 있는 데이터 버퍼(204)에 대한 정보를 포함할 수 있다. 데이터 버퍼는 데이터 전송에 대한 데이터가 기록되거나 읽혀지는 호스트 메모리에서의 위치가 될 수 있다. 하나 이상의 실시예들에서, 다수의 데이터 버퍼들이 사용될 수 있다. 직접 액세스 버퍼는 데이터 전송을 포함할 실제의 버퍼에서의 버퍼이다. 간접 액세스 버퍼는 데이터가 다수의 데이터 버퍼들에 분할되어 저장될 다수의 데이터 버퍼들에 대한 추가의 메모리 어드레스 컨텍스트 정보를 포함한다. 간접 액세스 버퍼를 사용하는 방법들은 분산/수집(scatter/gather) 액세스라 지칭될 수 있다.
전술한 바와 같이, 명령 리스트(202)가 실행될 준비가 되어 있다는 것을 나타내는 것으로서 호스트로부터 하나 이상의 메모리 장치들로 전송되는 초기 명령 메시지는 명령 리스트(202)를 가리키는 포인터를 포함할 수 있다. 직접 액세스 버퍼에 액세스하기 위하여, 포인터는 직접 호스트 메모리 어드레스를 포함할 수 있다. 간접 액세스 버퍼에 액세스하기 위하여, 포인터는 데이터가 위치하는 장소에 관한 데이터 또는 정보를 가지는 다른 위치들을 가리킬 수 있으며, 그러한 데이터 또는 정보의 예를 들면, 데이터 구성을 구현하는 다른 시스템 맞춤 구현예들 중에서, 특히 어드레스 액세스 테이블, 메모리 랩퍼(wrapper)내의 탐색표(look-up table)의 인덱스 및/또는 페이지 기술자(descriptor)가 있고, 당업계의 기술 분야에서 통상의 기술을 가진 자는 동 데이터 또는 정보를 알고 이해할 것이다. 직접 액세스 버퍼들과 간접 액세스 버퍼들, 둘 모두에서, 포인터는 호스트에 의해 해석되고 디코딩된다. 상기 하나 이상의 메모리 장치들은 포인터를 수신하지만, 그 포인터를 해석하려고 시도하지 않는다. 포인터는 상기 하나 이상의 메모리 장치들과 호스트 사이에서 호스트 메모리 참조로서 사용된다.
하나 이상의 실시예들에서, 명령 리스트는 단일 명령, 다수 명령들, 또는 명령들의 연결 리스트를 포함할 수 있다. 명령 리스트의 구조는 전체적인 시스템 구현에 의해 결정되며 하나 이상의 메모리 장치들에 의한 명령 실행에 영향을 미치지 않는다. 호스트와 상기 하나 이상의 메모리 장치들은 유사한 방법들을 사용하여 명령을 만들고, 실행하며 해석할 수 있다.
호스트 시스템은, 명령 리스트가 호스트 시스템 메모리에서 일단 만들어지면, 명령 리스트가 실행될 수 있음을 나타내는 명령 메시지를 상기 하나 이상의 메모리 장치들로 전송할 수 있다. 그러한 명령 메시지는 다수의 포인터들과 함께 명령(들)(202)의 호스트 메모리 위치, 데이터 버퍼(204) 및 상태 버퍼(206)를 나타낸다. 명령 메시지는 추가의 호스트 메모리 컨텍스트 정보도 또한 포함할 수 있다. 명령(들)은 메모리 장치와 호스트 시스템 메모리 사이의 데이터 전송을 수행하기 위한 명령들(instructions)을 포함할 수 있다. 데이터 버퍼는 전송을 위한 데이터가 기록되고 읽혀지는 호스트 메모리에서의 위치가 될 수 있다. 상태 버퍼는 명령(들)의 상태에 관한 데이터에 대한 호스트 메모리에서의 위치가 될 수 있다.
하나 이상의 실시예들에서, 명령 메시지를 수신한 후에 하나 이상의 메모리 장치들은 명령 메시지를 해석하고 포인터를 저장할 수 있다. 상기 하나 이상의 메모리 장치들은 메모리 장치들의 리소스와 능력에 따라 하나 이상의 명령들을 인출하려고 시도할 수 있다. 하나 이상의 실시예들에서, 하나 이상의 메모리 장치들은 호스트 메모리의 명령 리스트로부터 한꺼번에 명령들을 수신할 수 있다. 하나 이상의 실시예들에서, 하나 이상의 메모리 장치들은 명령 리스트에 있는 모든 명령들을 수신할 수 있다. 상기 하나 이상의 메모리 장치들은 명령 리스트에 있는 명령들의 일부를 또한 수신할 수 있다.
하나 이상의 실시예들에서, 상기 하나 이상의 메모리 장치들은 데이터 전송 메시지들을 호스트로 전송함으로써 호스트 메모리로부터 명령을 인출할 수 있다. 명령들을 인출하기 위하여 상기 하나 이상의 메모리 장치들에 의하여 전송된 데이터 전송 메시지들은, 호스트로부터 데이터를 인출하거나 호스트로 데이터를 전송하기 위하여 상기 하나 이상의 메모리 장치들에 의하여 전송된 데이터 전송 메시지들로서, 호스트에 의해 동일한 것으로 간주될 수 있으며, 예건대 호스트에 의해 구별될 수 없는 것으로 간주될 수 있다. 버스 프로토콜과 호스트는 명령 인출 또는 데이터 전송을 위한 데이터 전송 메시지들을 구별하지 않는다. 명령들 및/또는 데이터의 해석은 하나 이상의 메모리 장치들에 의해 처리될 수 있다. 호스트 제어기는 데이터를 해석하지 않거나 또는 장치 또는 명령 상태 정보를 유지하지 않는다. 호스트 제어기는, 호스트 제어기가 수신하는 데이터 전송 메시지들에 의하여 지시되는 바에 따라 데이터를 인출하거나 데이터를 호스트 메모리에 저장할 수 있다.
상기 하나 이상의 메모리 장치들과 호스트 사이 또는 호스트와 상기 하나 이상의 메모리 장치들 사이의 데이터 전송 메시지들은 패킷 헤더를 포함할 수 있다. 패킷 헤더는 기타 정보 중에서 특히, 전송 크기, 데이터 오프셋, 및 플래그들을 포함할 수 있는 호스트 메모리 어드레스 컨텍스트를 포함할 수 있다.
도 3은 본 발명의 하나 이상의 실시예들에 따른 데이터 전송 메시지(340)의 블럭도를 예시한다. 도 3에 예시된 실시예에서, 데이터 전송 메시지(340)는 패킷 헤더(350)와 데이터(370)를 포함할 수 있다. 하나 이상의 실시예들에서, 패킷 헤더(350)는 데이터 전송에 관한 정보를 나타내는 다수의 필드(field)들을 포함할 수 있다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 트랜잭션 유형 코드(TTC; transaction type code) 필드(352)를 포함할 수 있다. TTC 필드(352)는 특정 데이터 전송 메시지에 대한 트랜잭션의 유형을 나타내는데 사용될 수 있다. TTC 필드(352)는 데이터 전송 메시지의 수신기와 패킷 헤더(350)가 표현하는 동작의 유형을 나타내는데 사용될 수 있으며, 예컨대, 동작의 다른 유형들 중, 특히, 데이터가 호스트 메모리로부터 읽혀질 것인지, 데이터가 호스트 메모리에 기록될 것인지, 또는 데이터가 메모리 장치에 기록될 것인지를 나타내는데 사용될 수 있다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 트랜잭션 태그(TAG) 필드(354)를 포함할 수 있다. TAG 필드(354)는 명령 트랜잭션의 위상을 나타내는 불변의 참조 계수로서 사용될 수 있다. TAG 필드(354)는 명령이 다수의 데이터 전송 메시지들을 사용하여 실행되고 있는 경우에 명령을 실행하는 경과를 추적하는데 사용될 수 있다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 물리 장치 ID(PDID : physical device ID) 필드(356)를 포함할 수 있다. PDID 필드(356)는 기타 물리적 식별 특징들 중에서 특히, 물리적 버스 어드레스/ID, 버스 번호 및 채널 번호를 나타내는 다수의 비트들을 포함할 수 있다. 또한 PDID 필드(356)는 버스에서 특정 메모리 장치의 물리적 위치를 어드레스 하는데 사용될 수 있고, 또한 어느 장치가 데이터 전송 메시지를 전송하고 있는지를 호스트에 나타낼 수 있다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 논리 장치 ID(LDID : logical device ID) 필드(358)를 포함할 수 있다. LDID 필드(358)는 논리 장치 어드레스/ID를 포함할 수 있다. LDID 필드(358)는 호스트 및/또는 하나 이상의 메모리 장치들과 같은 물리 장치내에 특정 유닛 또는 부품을 논리적으로 어드레스 하는데 사용될 수 있다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 불투명한 메모리 포인터 객체(OMPO : opaque memory pointer object) 필드(360)를 포함할 수 있다. OMPO 필드(360)는 호스트 메모리내에서 메모리 어드레스를 나타내는 데이터를 포함할 수 있다. OMPO 필드(360) 내의 데이터는 호스트에 종속적인 데이터를 포함한다. OMPO 필드(360)에 있는 데이터는 불투명한 메모리 포인터 객체와 같은 포인터가 될 수 있다. 불투명한 메모리 포인터 객체는 불변값이 될 수 있으며, 그것은 명령 처리 중에 하나 이상의 메모리 장치들이나 호스트에 의해 변경되지 않는다. 데이터 전송 메시지는 다수의 포인터들을 포함할 수 있으며, 여기서, 하나 이상의 포인터들은 하나 이상의 명령들에 대한 것이 될 수 있고, 하나 이상의 포인터들은 하나 이상의 데이터 버퍼들에 대한 것이 될 수 있으며, 하나 이상의 포인터들은 하나 이상의 상태 버퍼들에 대한 것이 될 수 있다. 분산/수집 데이터 전송에서, 하나를 초과하는 데이터 버퍼 포인터가 사용될 수 있다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 오프셋 필드(362)를 포함할 수 있다. 오프셋 필드(362)는 포인터에 의해 참조되는 데이터의 위치를 나타내는데 사용될 수 있는 오프셋 값을 포함할 수 있다. 포인터는 데이터 위치에 대한 근거가 될 수 있으며, 오프셋은 데이터의 물리적 위치를 찾기 위하여 포인터에서 어드레스와 결합된 값을 포함할 수 있다. 포인터 및 오프셋은 호스트 메모리에서 데이터의 실제 어드레스를 나타내는데 함께 사용될 수 있다. 오프셋 필드(362)는 메모리 장치에 의해 결정될 수 있다. 하나 이상의 실시예들에서, 오프셋 필드(362)는 명령 처리 중에 하나 이상의 메모리 장치들이나 호스트에 의해 변경될 수 없다. 하나 이상의 실시예들에서, 오프셋은 시스템에 종속적이다.
하나 이상의 실시예들에서, 패킷 헤더(350)는 전송 길이 필드(364)를 포함할 수 있다. 전송 길이 필드(364)는 데이터 전송 메시지에서 나타낸 것으로서 데이터 전송 동안 전송할, 예를 들면, 워드(word) 수 및/또는 데이터 전송의 크기와 같은 데이터 양을 포함할 수 있다.
하나 이상의 실시예들에서, 데이터 전송 메시지(340)는 데이터(370)를 포함할 수 있다. 데이터가 하나 이상의 메모리 장치들로부터 읽혀지고 있고 호스트 메모리에 기록되고 있을 때, 데이터(370)를 포함하는 데이터 전송 메시지는 하나 이상의 메모리 장치들로부터 호스트로 전송된다. 데이터가 호스트 메모리로부터 읽혀지고 있고 하나 이상의 메모리 장치들에 기록되고 있을 때, 데이터(370)를 포함하는 데이터 전송 메시지는 호스트로부터 하나 이상의 메모리 장치들로 전송된다.
하나 이상의 메모리 장치들은 명령을 실행할 때 전송할 데이터 전송 메시지들의 수, 데이터 패킷들의 크기와 데이터 전송 방향을 결정할 수 있다. 하나 이상의 메모리 장치들은 데이터 전송이나 장치 상태의 호스트 중재 또는 추적을 요구하지 않는다. 상기 하나 이상의 메모리 장치들은 호스트 제어기로 데이터 전송 메시지들 및/또는 완료 메시지들을 전송할 수 있다. 전송 유형들은 TTC에 의해 패킷 헤더에 나타내며, 기타 전송 유형들 중에서, 예컨대 읽기와 같은 데이터 전송 요청, 또는 예컨대 쓰기와 같은 데이터 전송 응답이 될 수 있다. 하나 이상의 실시예들에서, 하나 이상의 데이터 전송 요청들 또는 데이터 전송 응답들은, 예컨대 호스트 메모리 및/또는 하나 이상의 메모리 장치들의 블럭 크기와 프로토콜 패킷의 크기에 따라, 명령을 실행하는데 사용될 수 있다. 하나 이상의 메모리 장치들은 명령을 실행하고 데이터 전송 메시지들을 전송할 때 발생될 트랜잭션들의 수를 결정할 수 있다. 하나 이상의 메모리 장치들은 하나 이상의 메모리 장치들에 의하여 결정된 타이밍, 순서 및 우선순위에 근거하여 명령들을 큐잉(queue) 할 수 있다. 명령(들)을 실행하는 데이터 전송 메시지들은 하나 이상의 메모리 장치들이 나타내는 순서로 전송될 수 있다.
하나 이상의 실시예들에서, 호스트 제어기는 하드웨어 및/또는 펌웨어를 통하여 패킷 헤더에 있는 트랜잭션 유형 코드(TTC : transaction type code)들에 응답하도록 구성될 수 있다. TTC들에 응답하기 위한 호스트 제어 능력이 있음으로써, 호스트는 하나 이상의 메모리 장치들에 대한 트랜잭션 또는 상태정보를 관리하지 않아도 되는데, 즉, 호스트는 무상태(stateless) 방식으로 동작한다.
하나 이상의 실시예들에서, 호스트 제어기는 펌웨어 및/또는 하드웨어를 통하여 패킷 헤더에 있는 메모리 어드레스 컨텍스트에 응답하도록 구성될 수 있다. 그러한 실시예들에서, 호스트 제어기는 제 1 당사자 직접 메모리 액세스(FPDMA : first party direct memory access) 데이터 전송을 지원할 수 있다. 호스트와 하나 이상의 메모리 장치들 사이의 데이터 전송은 호스트 중재 없이 일어날 수 있다.
하나 이상의 메모리 장치들은 데이터 전송의 완료 즉시 호스트 제어기를 통하여 호스트로 완료 메시지를 전송할 수 있다. 완료 메시지는 최근에 실행된 명령(들)의 상태를 나타낼 수 있다. 완료 메시지는 하나 이상의 메모리 장치들의 상태도 또한 나타낼 수 있다. 하나 이상의 메모리 장치들은, 명령(들)이 실행될 준비가 되었음을 호스트 시스템으로부터 하나 이상의 메모리 장치들로 전송하는 데이터 전송 메시지에 포함될 수 있는 포인터를 통하여 호스트 메모리에 있는 상태 버퍼 위치를 수신할 수 있다. 완료 메시지는 상태 버퍼를 가리키는 포인터를 포함할 수 있다.
호스트 제어기는 완료 메시지에 있는 상태 데이터를 상태 버퍼로 전송할 수 있고, 완료 메시지가 수신되어 저장되었음을 호스트 종속 방식으로 호스트에 통지할 수 있다. 그러한 통지는 명령(들)의 실행 완료를 나타내는 수단으로서 호스트가 이용할 수 있는 수단에 의해 완료될 수 있다. 일부 실시예들에서는, 이러한 통지는 호스트 내에서 구현된 인터럽트 메카니즘을 통하여 이루어진다.
결 론
본 발명은 메모리 장치로 호스트 메모리 액세스를 제어하는 방법들, 장치들 및 시스템들을 포함한다. 메모리 장치로 호스트 메모리 액세스를 제어하는 일 실시예는, 호스트로부터 적어도 하나의 명령(들)을 수신하는 것과 메모리 장치로 적어도 하나의 명령(들)의 실행을 제어하는 것을 포함한다.
부품이 다른 부품"상에" 있거나 다른 부품에 "연결"되거나 다른 부품과 "결합된" 것으로 인용될 때, 그것은 다른 부품상에 직접 있을 수 있거나 다른 부품에 연결되거나 다른 부품과 결합될 수 있거나, 또는 중재하는 부품들이 있을 수 있다는 것이 이해될 것이다. 대조적으로, 부품이 다른 부품"상에 직접" 있거나 다른 부품에 "직접 연결"되거나 다른 부품과 "직접 결합된" 것으로 인용될 때, 중재 부품들이나 계층들은 존재하지 않는다. 본 명세서에 사용된 바와 같이, 용어 "및/또는" 하나 이상의 관련된 등재 품목들의 임의 및 모든 조합들을 포함한다.
용어들 "제1", "제2" 등이 다양한 부품들을 기술하기 위하여 본 명세서에서사용될 수 있지만, 이러한 부품들은 이러한 용어들에 의하여 제한되지 않아야 한다는 것이 이해될 것이다. 이러한 용어들은 오직 하나의 부품을 다른 부품과 구별하는데에 사용된다. 따라서, "제 1 부품"은 본 발명의 교의를 벗어나지 않고 "제 2 부품"으로 호칭될 수도 있다.
본 명세서에서 특정한 실시예들이 예시되고 설명되었지만, 당업계의 기술 분야에서 통상의 기술을 가진 자들은 본 실시예들과 동일한 결과를 달성할 것으로 여겨진 장치가 예시된 특정한 실시예들을 대체할 수 있다는 것을 살펴서 알게 될 것이다. 본 명세서에 개시된 내용들은 본 발명의 하나 이상의 실시예들의 다양한 개작과 변형을 포괄하도록 한 것이다. 상기 설명은 예시적으로 한 것이지 제한적으로 한 것이 아니라는 것을 이해하여야 한다. 상기 실시예들의 조합 및 본 명세서에 구체적으로 기술되지 않은 실시예들은 당업계의 기술 분야에서 숙련 기술을 가진 자들에게는 명백할 것이다. 본 발명의 상기 하나 이상의 실시예들의 범위는 상기 구조들과 방법들이 사용되는 기타 용례들을 포함한다. 그래서, 본 발명의 하나 이상의 실시예들의 범위는 첨부된 청구항들이 권리가 있는 전 범위의 등가물과 함께 첨부된 청구항들을 참조하여 결정되어야 한다.
전술한 "발명을 실시하기 위한 구체적 내용"에서, 몇 가지 특징들은 개시를 간소화하기 위하여 하나의 실시예에 함께 묶어 놓았다. 이러한 개시 방법은 본 발명의 개시된 실시예들이 각 청구항에 명백히 언급된 것보다 더 많은 특징들을 사용하여야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음 청구항들이 반영하듯이, 본 발명의 내용은 하나의 개시된 실시예의 모든 특징들에 있는 것은 결코 아니다. 따라서, 다음 청구항들은 본 명세서에 의하여 "발명을 실시하기 위한 구체적인 내용"에 통합되며, 각 청구항은 별개의 실시예로서 독립적으로 유지된다.

Claims (39)

  1. 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법으로서,
    호스트로부터 적어도 하나의 명령을 수신하는 단계; 및
    상기 메모리 장치에 의해 적어도 하나의 명령의 실행을 제어하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  2. 청구항 1에 있어서,
    상기 방법은 호스트 메모리에 저장된 적어도 하나의 명령을 찾기 위하여 상기 호스트로부터 포인터를 수신하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  3. 청구항 2에 있어서,
    상기 방법은 상기 메모리 장치로부터 상기 호스트로 데이터 전송 메시지를 전송하는 단계를 포함하고, 상기 데이터 전송 메시지는 호스트 메모리 내의 적어도 하나의 명령을 찾기 위하여 상기 포인터를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  4. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
    상기 메모리 장치에 의해 적어도 하나의 명령의 실행을 제어하는 단계는 데이터 전송의 타이밍, 순서 및 크기를 결정하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  5. 청구항 4에 있어서,
    데이터 전송의 상기 타이밍, 순서 및 크기를 결정하는 단계는 적어도 하나의 명령을 실행하는 메모리 장치 상태 및/또는 능력에 기초하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  6. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 메모리 장치에 의해 적어도 하나의 명령의 실행을 제어하는 단계는 패킷 헤더를 갖는 데이터 전송 메시지를 전송하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  7. 청구항 6에 있어서,
    상기 패킷 헤더는 호스트 메모리 어드레스 컨텍스트를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  8. 청구항 7에 있어서,
    상기 호스트 메모리 어드레스 컨텍스트는 전송 크기, 데이터 오프셋 및 데이터 플래그들을 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  9. 청구항 6에 있어서,
    상기 패킷 헤더는 트랜잭션 유형 코드, 트랜잭션 태그, 물리 장치 ID, 논리 장치 ID, 포인터, 오프셋 및 전송 길이를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  10. 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법으로서,
    호스트 메모리에 있는 적어도 하나의 명령이 실행될 준비가 되어 있음을 상기 메모리 장치에 통지하기 위하여 호스트로부터 명령 메시지를 수신하는 단계;
    호스트 메모리로부터 상기 적어도 하나의 명령을 인출하는 단계;
    상기 호스트로 데이터 전송 메시지를 전송함으로써 상기 메모리 장치의 제어하에 상기 적어도 하나의 명령을 실행하는 단계; 및
    상기 적어도 하나의 명령이 완료되었음을 상기 호스트에 통지하기 위하여 상기 호스트에 완료 메시지를 전송하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  11. 청구항 10에 있어서,
    상기 명령 메시지는 상기 적어도 하나의 명령이 위치한 호스트 메모리 내에서 주소를 가리키는 메모리 포인터를 표시하는 불투명한 메모리 포인터 객체를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  12. 청구항 10에 있어서,
    상기 호스트는 상기 명령 메시지의 전송에 관련하여 상기 적어도 하나의 명령의 실행의 제어를 넘겨주는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  13. 청구항 10에 있어서,
    상기 호스트는 상기 명령 메시지의 전송에 관련하여 상기 호스트와 상기 메모리 장치 사이의 버스의 제어를 넘겨주는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  14. 청구항 10 내지 청구항 13 중 어느 한 항에 있어서,
    상기 적어도 하나의 명령을 인출하는 단계는 불투명한 메모리 포인터 객체, 전송 크기, 데이터 오프셋 및 데이터 플래그들을 갖는 데이터 전송 메시지를 상기 호스트의 제어기로 전송하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  15. 청구항 14에 있어서,
    상기 적어도 하나의 명령을 인출하는 단계는 상기 호스트 제어기로 상기 데이터 전송 메시지를 처리하는 단계와, 상기 호스트로부터 상기 메모리 장치로 적어도 하나의 명령을 전송하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  16. 청구항 10 내지 청구항 13 중 어느 한 항에 있어서,
    상기 데이터 전송 메시지를 전송하는 단계는 패킷 헤더를 갖는 상기 데이터 전송 메시지를 상기 호스트로 전송하는 단계를 포함하는, 메모리 장치에 의해 호스트 메모리 액세스를 제어하기 위한 방법.
  17. 적어도 하나의 메모리 장치; 및
    호스트 메모리를 포함하고, 상기 호스트와 적어도 하나의 메모리 장치 사이의 데이터 전송들이 적어도 하나의 메모리 장치에 의해 제어되는, 시스템.
  18. 청구항 17에 있어서,
    호스트 메모리는 원격 호스트 메모리를 포함하는, 시스템.
  19. 청구항 17에 있어서,
    호스트 메모리는 임베디드 호스트 메모리를 포함하는, 시스템.
  20. 청구항 17에 있어서,
    상기 적어도 하나의 메모리 장치는 상기 버스를 제어하고 상기 버스를 통하여 상기 데이터 전송들을 제어하는, 시스템.
  21. 청구항 17 내지 청구항 20 중 어느 한 항에 있어서,
    상기 적어도 하나의 메모리 장치는 상기 호스트로의 데이터 전송들의 타이밍 및 순서를 제어하는, 시스템.
  22. 청구항 17 내지 청구항 20 중 어느 한 항에 있어서,
    상기 적어도 하나의 메모리 장치는 데이터 전송 메시지들을 상기 호스트로 전송함으로써 상기 호스트와 상기 적어도 하나의 메모리 장치 사이의 상기 데이터 전송들을 제어하는, 시스템.
  23. 청구항 22에 있어서,
    상기 데이터 전송 메시지들은 적어도 하나의 명령을 가르키는 포인터를 포함하는, 시스템.
  24. 호스트에 연결된 적어도 하나의 메모리 장치를 포함하고,
    호스트 메모리로부터 적어도 하나의 메모리 장치로 적어도 하나의 명령이 전송되고, 상기 적어도 하나의 메모리 장치가 상기 적어도 하나의 명령의 실행을 제어하는, 시스템.
  25. 청구항 24에 있어서,
    상기 호스트는 상기 적어도 하나의 명령을 만들고 호스트 메모리에 데이터 버퍼 및 상태 버퍼를 할당하도록 구성되는, 시스템.
  26. 청구항 24 또는 청구항 25 중 어느 한 항에 있어서,
    상기 호스트는, 상기 적어도 하나의 명령을 가리키는 포인터, 상기 데이터 버퍼를 가리키는 포인터 및 상기 상태 버퍼를 가리키는 포인터를 가지는 명령 메시지를 상기 적어도 하나의 메모리 장치로 전송하도록 구성되는, 시스템.
  27. 청구항 26에 있어서,
    상기 적어도 하나의 메모리 장치는, 상기 적어도 하나의 명령을 가리키는 포인터를 사용하여 호스트 메모리로부터의 상기 적어도 하나의 명령으로부터 하나 이상의 명령들을 인출하도록 구성된 제어 회로를 포함하는, 시스템.
  28. 청구항 24 또는 청구항 25 중 어느 한 항에 있어서,
    상기 적어도 하나의 메모리 장치는, 상기 호스트로 적어도 하나의 전송 메시지를 전송함으로써 상기 적어도 하나의 명령의 실행을 제어하도록 구성된 제어 회로를 포함하는, 시스템.
  29. 청구항 28에 있어서,
    상기 적어도 하나의 데이터 전송 메시지는 호스트 메모리 어드레스 컨텍스트를 갖는 패킷 헤더를 포함하는, 시스템.
  30. 청구항 24 또는 청구항 25 중 어느 한 항에 있어서,
    상기 적어도 하나의 메모리 장치는, 하나 이상의 명령들을 처리하고 데이터 전송 메시지들의 수, 데이터 전송의 크기 및 데이터 전송의 방향을 결정하도록 구성된 제어 회로를 포함하는, 시스템.
  31. 적어도 하나의 메모리 장치에 연결되는 연결부;
    호스트 프로세서에 연결되는 연결부; 및
    호스트 메모리에 연결되는 연결부를 포함하는 호스트 제어기로서,
    상기 호스트 제어기는 호스트 시스템 메모리 내의 상기 호스트 프로세서에 의해 만들어진 명령들을 상기 적어도 하나의 메모리 장치로 전송하고,
    상기 호스트 제어기는 호스트 메모리와 상기 적어도 하나의 메모리 장치 사이에서 무상태(stateless) 방식으로 데이터를 전송하는, 호스트 제어기.
  32. 청구항 31에 있어서,
    상기 호스트 제어기는 패킷 헤더에 있는 트랜잭션 유형 코드(TTC : transaction type code)에 응답하도록 구성되는, 호스트 제어기.
  33. 청구항 32에 있어서,
    상기 호스트 제어기는 상기 적어도 하나의 메모리 장치로 제 1 당사자 직접 액세스(FPDMA : first party direct access)를 지원하도록 구성되는, 호스트 제어기.
  34. 청구항 32에 있어서,
    상기 TTC는 상기 데이터 전송의 방향을 나타내는, 호스트 제어기.
  35. 메모리 장치를 호스트에 연결하도록 구성된 연결부를 포함하는 메모리 장치로서,
    상기 메모리 장치는 상기 호스트로부터 적어도 하나의 명령을 수신하고 상기 적어도 하나의 명령의 실행을 제어하도록 구성되는, 메모리 장치.
  36. 청구항 35에 있어서,
    상기 메모리 장치는 명령 실행 중에 패킷 헤더를 포함하는 데이터 전송 메시지를 호스트 제어기로 전송하도록 구성되는, 메모리 장치.
  37. 청구항 35에 있어서,
    상기 메모리 장치는 데이터 전송에 대한 상태와 상태 정보를 유지하고 제어하도록 구성되는, 메모리 장치.
  38. 청구항 35 내지 청구항 37 중 어느 한 항에 있어서,
    상기 메모리 장치는 상기 적어도 하나의 명령을 우선 순위 매기고, 차례로 배열하고 큐잉(queue)하도록 구성되는, 메모리 장치.
  39. 청구항 38에 있어서,
    상기 메모리 장치는 상기 적어도 하나의 명령을 실행하기 위한 메모리 장치 상태 및/또는 능력에 기초하여 상기 적어도 하나의 명령을 우선 순위 매기고, 차례로 배열하고 큐잉하도록 구성되는, 메모리 장치.
KR1020127000024A 2009-06-03 2010-05-24 메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들 KR101371936B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/477,204 2009-06-03
US12/477,204 US8225052B2 (en) 2009-06-03 2009-06-03 Methods for controlling host memory access with memory devices and systems
PCT/US2010/001521 WO2010141059A2 (en) 2009-06-03 2010-05-24 Methods for controlling host memory access with memory devices and systems

Publications (2)

Publication Number Publication Date
KR20120014938A true KR20120014938A (ko) 2012-02-20
KR101371936B1 KR101371936B1 (ko) 2014-03-07

Family

ID=43298357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127000024A KR101371936B1 (ko) 2009-06-03 2010-05-24 메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들

Country Status (7)

Country Link
US (3) US8225052B2 (ko)
EP (1) EP2438522B1 (ko)
JP (1) JP5638069B2 (ko)
KR (1) KR101371936B1 (ko)
CN (1) CN102460405B (ko)
TW (1) TWI436217B (ko)
WO (1) WO2010141059A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239806B2 (en) * 2011-03-11 2016-01-19 Micron Technology, Inc. Systems, devices, memory controllers, and methods for controlling memory
KR101284002B1 (ko) * 2011-09-07 2013-07-10 삼성전자주식회사 외부 메모리의 장착 수단을 구비하는 장치
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
KR102030733B1 (ko) * 2013-01-02 2019-10-10 삼성전자주식회사 메모리 시스템 및 이의 구동 방법
US9128634B1 (en) * 2013-03-11 2015-09-08 Marvell International Ltd. Systems and methods of packed command management for non-volatile storage devices
CN104461974B (zh) * 2013-09-13 2017-07-25 英业达科技有限公司 一种采用高速小型电脑系统传输接口的服务器系统
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
CN103631534B (zh) 2013-11-12 2017-01-11 北京兆芯电子科技有限公司 数据存储系统以及其管理方法
CN104636081B (zh) * 2013-11-12 2017-11-14 上海兆芯集成电路有限公司 数据存储系统以及其管理方法
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
US11030122B2 (en) * 2014-04-08 2021-06-08 Micron Technology, Inc. Apparatuses and methods for securing an access protection scheme
US9851901B2 (en) * 2014-09-26 2017-12-26 Western Digital Technologies, Inc. Transfer of object memory references in a data storage device
US9535850B1 (en) 2015-01-28 2017-01-03 Google Inc. System and method for efficient DMA transfers
US10120818B2 (en) * 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output command
KR20170046862A (ko) * 2015-10-21 2017-05-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180018886A (ko) 2016-08-09 2018-02-22 삼성전자주식회사 스토리지 시스템의 동작 방법 및 호스트의 동작 방법
US10621117B2 (en) * 2017-06-15 2020-04-14 Micron Technology, Inc. Controlling memory devices using a shared channel
KR20190106228A (ko) * 2018-03-08 2019-09-18 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10853273B2 (en) * 2018-08-01 2020-12-01 Micron Technology, Inc. Secure memory system programming
US11599481B2 (en) 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors
WO2022126534A1 (zh) * 2020-12-17 2022-06-23 华为技术有限公司 数据处理方法及相关设备
US20220291947A1 (en) * 2021-03-10 2022-09-15 Meta Platforms, Inc. Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4425615A (en) * 1980-11-14 1984-01-10 Sperry Corporation Hierarchical memory system having cache/disk subsystem with command queues for plural disks
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
JP3209634B2 (ja) * 1994-03-28 2001-09-17 株式会社日立製作所 計算機システム
US6374313B1 (en) * 1994-09-30 2002-04-16 Cirrus Logic, Inc. FIFO and method of operating same which inhibits output transitions when the last cell is read or when the FIFO is erased
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
US5968143A (en) 1995-12-13 1999-10-19 International Business Machines Corporation Information handling system for transfer of command blocks to a local processing side without local processor intervention
US6049842A (en) 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6212593B1 (en) 1998-06-01 2001-04-03 Advanced Micro Devices, Inc. Method and apparatus for generating interrupts on a buffer by buffer basis in buffer descriptor ring direct memory access system
US6996820B1 (en) * 1999-04-05 2006-02-07 Cisco Technology, Inc. Efficient multiple priority list memory system
JP4074029B2 (ja) * 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
US7457897B1 (en) * 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US6956818B1 (en) 2000-02-23 2005-10-18 Sun Microsystems, Inc. Method and apparatus for dynamic class-based packet scheduling
US20030065862A1 (en) * 2001-09-28 2003-04-03 Wyland David C. Computer system and method for communications between bus devices
US6807599B2 (en) * 2001-10-15 2004-10-19 Advanced Micro Devices, Inc. Computer system I/O node for connection serially in a chain to a host
JP2003256273A (ja) * 2002-02-26 2003-09-10 Nec Corp フラッシュメモリアクセス回路及びフラッシュメモリアクセス方法
EP1345236B1 (en) * 2002-03-14 2011-05-11 STMicroelectronics Srl A non-volatile memory device
KR100441608B1 (ko) * 2002-05-31 2004-07-23 삼성전자주식회사 낸드 플래시 메모리 인터페이스 장치
KR100449807B1 (ko) * 2002-12-20 2004-09-22 한국전자통신연구원 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
US6810443B2 (en) * 2002-12-31 2004-10-26 Intel Corporation Optical storage transfer performance
KR100546348B1 (ko) * 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
US7689738B1 (en) * 2003-10-01 2010-03-30 Advanced Micro Devices, Inc. Peripheral devices and methods for transferring incoming data status entries from a peripheral to a host
US7673080B1 (en) * 2004-02-12 2010-03-02 Super Talent Electronics, Inc. Differential data transfer for flash memory card
SG149853A1 (en) * 2004-06-15 2009-02-27 Trek 2000 Int Ltd Solid-state storage device with wireless host interface
US20060010260A1 (en) 2004-07-07 2006-01-12 Fung Hon C Direct memory access (DMA) controller and bus structure in a master/slave system
US7290085B2 (en) * 2004-11-16 2007-10-30 International Business Machines Corporation Method and system for flexible and efficient protocol table implementation
US7475167B2 (en) * 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
US7428610B2 (en) * 2006-02-14 2008-09-23 Atmel Corporation Writing to flash memory
TW200734880A (en) 2006-03-07 2007-09-16 Via Tech Inc Direct memory access method for microcomputer system
KR100896181B1 (ko) * 2007-01-26 2009-05-12 삼성전자주식회사 임베디드 낸드 플래시 메모리 제어 장치 및 방법
KR20080105390A (ko) * 2007-05-30 2008-12-04 삼성전자주식회사 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
US8683126B2 (en) * 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8239612B2 (en) 2007-09-27 2012-08-07 Tdk Corporation Memory controller, flash memory system with memory controller, and control method of flash memory
JP4488048B2 (ja) * 2007-09-27 2010-06-23 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN101162449B (zh) * 2007-10-08 2010-06-02 福州瑞芯微电子有限公司 Nand flash控制器及其与nand flash芯片的数据交互方法
WO2009060567A1 (ja) * 2007-11-09 2009-05-14 Panasonic Corporation データ転送制御装置、データ転送装置、データ転送制御方法及び再構成回路を用いた半導体集積回路
TW200921395A (en) 2007-11-14 2009-05-16 Sonix Technology Co Ltd System and method of direct memory access
US8364863B2 (en) * 2008-07-11 2013-01-29 Intel Corporation Method and apparatus for universal serial bus (USB) command queuing
US8327040B2 (en) * 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller

Also Published As

Publication number Publication date
US20120284466A1 (en) 2012-11-08
KR101371936B1 (ko) 2014-03-07
JP5638069B2 (ja) 2014-12-10
US9811258B2 (en) 2017-11-07
CN102460405A (zh) 2012-05-16
JP2012529103A (ja) 2012-11-15
EP2438522A2 (en) 2012-04-11
US20150153956A1 (en) 2015-06-04
CN102460405B (zh) 2015-11-25
EP2438522B1 (en) 2015-10-28
EP2438522A4 (en) 2013-05-08
TW201104438A (en) 2011-02-01
WO2010141059A3 (en) 2011-03-03
TWI436217B (zh) 2014-05-01
WO2010141059A2 (en) 2010-12-09
US20100312973A1 (en) 2010-12-09
US8225052B2 (en) 2012-07-17
US8918600B2 (en) 2014-12-23

Similar Documents

Publication Publication Date Title
KR101371936B1 (ko) 메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들
US11023167B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
US11954370B2 (en) Command queuing
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
KR20200123260A (ko) 캐시 및 다중 독립 어레이를 갖는 메모리용 인터페이스
CN110825669A (zh) 修改NVMe PRP列表指针和数据指针以利于路由PCIe存储器请求
EP2054800A2 (en) Flash memory access circuit
US20210019077A1 (en) Automatic host buffer pointer pattern detection
US9274860B2 (en) Multi-processor device and inter-process communication method thereof
CN113994314A (zh) 扩展存储器接口
CN113196225A (zh) 开放信道矢量命令执行
CN109542336B (zh) 存储设备及其操作方法
CN113490915A (zh) 扩展存储器操作
US11822816B2 (en) Networking device/storage device direct read/write system
CN113885783B (zh) 存储器系统及其操作方法
KR20110041613A (ko) Dram 인터페이스와 공유 메모리 영역을 통한 비휘발성 메모리 장치와 자기 기록 매체에 접근할 수 있는 장치
CN114694700A (zh) 存储器控制器、非易失性存储器装置及其存储装置
US20110167210A1 (en) Semiconductor device and system comprising memories accessible through dram interface and shared memory region
CN117632794A (zh) 调用待决高速缓存行逐出

Legal Events

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

Payment date: 20170202

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 6