KR20170072779A - 통신 메커니즘을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

통신 메커니즘을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170072779A
KR20170072779A KR1020160103061A KR20160103061A KR20170072779A KR 20170072779 A KR20170072779 A KR 20170072779A KR 1020160103061 A KR1020160103061 A KR 1020160103061A KR 20160103061 A KR20160103061 A KR 20160103061A KR 20170072779 A KR20170072779 A KR 20170072779A
Authority
KR
South Korea
Prior art keywords
command
host
address
medium
command packet
Prior art date
Application number
KR1020160103061A
Other languages
English (en)
Other versions
KR102338323B1 (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 KR20170072779A publication Critical patent/KR20170072779A/ko
Application granted granted Critical
Publication of KR102338323B1 publication Critical patent/KR102338323B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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]

Abstract

본 발명에 따른 컴퓨팅 시스템은 드라이버 및 어드레스 맵을 포함하는 호스트 메모리, 및 상기 호스트 메모리와 연결되고, 상기 드라이버를 사용하여 커맨드를 커맨드 패킷으로 분할하고, 상기 커맨드 패킷을 상기 어드레스 맵으로 맵핑하고, 커맨드 어드레스 매체를 통해 상기 어드레스 맵을 기반으로 상기 커맨드 패킷을 전달하도록 구성되는 호스트 중앙 처리 유닛을 포함한다.

Description

통신 메커니즘을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법{COMPUTING SYSTEM WITH COMMUNICATION MECHANISM AND METHOD OF OPERATION THEREOF}
본 발명은 컴퓨팅 시스템에 관한 것으로써, 더욱 상세하게는 통신을 위한 시스템에 관한 것이다.
최근의 소비자 및 산업용 전자 장치들, 특히, 그래픽 컴퓨터 시스템들, 서버들, 텔레비전들, 프로젝터들, 셀룰러 폰들, PDA(portable digital assistants), 및 조합 장치들과 같은 장치들은 현대 생활을 지원하기 위하여 향상된 수준의 기능을 제공하고 있다. 현존하는 기술들에서 연구 및 개발은 다양한 다른 지침들을 얻을 수 있다.
전자 장치들의 대부분은 데이터 스토리지를 필요로 한다. 저장될 데이터의 통신은 가장 중요하다. 호스트 장치 및 스토리지 장치의 다른 타입들을 유연하게 조합하기 위한 유연성을 제공하나, 스토리지 장치 및 호스트 장치 사이의 통신은 점점 더 복잡해지고 있다.
즉, 독점적 정보에 기반된 정보 처리 상호 운용의 문제점들(interoperability problems)을 회피하면서, 신뢰성 있고, 확실한 메커니즘을 갖는 통신 메커니즘을 사용하는 컴퓨팅 시스템에 대한 요구가 여전히 존재한다. 시장에서 중요한 제품 차별화를 위해 줄어든 기회들 및 증가하는 소비자 기대와 함께, 계속해서 증가하는 상업적 경쟁력의 관점에서, 이러한 문제의 해결책을 찾는 것이 더욱 중요하다. 추가적으로, 비용을 감소하고, 성능 및 효율을 향상시키고, 경쟁력을 갖추기 위한 요구는 이러한 문제점들의 해결책을 찾는 중요한 필요성에 더 큰 긴급성을 더한다.
이러한 문제들의 해결책들은 오랫동안 연구되고 있으나, 이전의 개발들은 어떤 해결책들을 제안하거나 제시하지 못했다. 즉, 이러한 문제점들의 해결책은 당업자가 오랫동안 해결하지 못하고 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로, 본 발명은 향상된 성능을 갖는 컴퓨팅 시스템 및 그것의 동작 방법을 제공하는 것을 목적으로 한다.
본 발명의 실시 예는 호스트 메모리 및 호스트 중앙 처리 유닛을 포함하는 장치를 제공한다. 호스트 메모리는 드라이버 및 어드레스 맵을 포함한다. 호스트 중앙 처리 유닛은 호스트 메모리와 연결되고, 드라이버를 통해 커맨드를 커맨드 패킷으로 분할하고, 커맨드 패킷을 어드레스 맵으로 맵핑하고, 커맨드 어드레스 매체를 통해 어드레스 맵을 기반으로 커맨드 패킷을 전달하도록 구성된다.
본 발명의 실시 예는 커맨드를 분석하도록 구성되는 호스트 인터페이스 및 호스트 인터페이스와 연결되고, 커맨드 패킷으로부터 커맨드를 조립하도록 구성되는 커맨드 블록을 포함하는 장치를 제공한다.
본 발명의 실시 예는 드라이버를 사용하여 커맨드를 커맨드 패킷으로 분할하는 단계, 커맨드 패킷을 어드레스 맵으로 맵핑하는 단계, 및 커맨드 어드레스 매체를 통해 어드레스 맵을 기반으로 커맨드 패킷을 전달하는 단계를 포함하는 방법을 제공한다.
본 발명의 특정 실시 예들은 상술된 구성 이외 또는 추가적인 구성들 또는 단계들을 포함할 수 있다. 단계들 또는 구성들은 첨부된 도면들을 참조하여 설명된 상세한 설명으로부터 당업자에 의해 구현될 수 있다.
본 발명의 실시 예에 따르면, 향상된 성능 및 감소된 비용을 갖는 컴퓨팅 시스템 및 그것의 동작 방법이 제공된다.
도 1은 실시 예의 데이터 통신 메커니즘을 사용하는 컴퓨팅 시스템의 예시적인 블록도이다.
도 2는 실시 예에서, 컴퓨팅 시스템에 의해 활용되는 통신 메커니즘을 위한 어드레스 맵의 예를 좀 더 상세하게 보여주는 도면이다.
도 3은 실시 예에서, 컴퓨팅 시스템에 의해 활용되는 통신 메커니즘을 사용하는 커맨드를 발행하는 예시적인 순서도이다.
도 4는 실시 예에서, 컴퓨팅 시스템에 의해 활용되는 통신 메커니즘을 사용하는 상태를 회수하는 예시적인 순서도이다.
도 5는 본 발명의 실시 예에서, 컴퓨팅 시스템의 동작의 방법을 보여주는 순서도이다.
다양한 실시 예들은 플렉서블 메모리 인터페이스를 제공한다. 플렉서블 메모리 인터페이스는 DDR과 같은 휘발성 메모리 인터페이스를 활용하면서, 현존하는 스토리지 타입 시스템들의 기능들을 유지한다. 다양한 실시 예들은 커맨드 어드레스 매체를 활용한다. 특정 예로서, 커맨드 어드레스 매체는 불휘발성 메모리 듀얼 인라인 메모리 모듈(NVM-DIMM; non-volatile memory dual inline memory modules)을 위한 커맨드 및 어드레스(CA) 버스 기반의 프로토콜일 수 있다. NVM-DIMM을 위한 이러한 프로토콜은 호스트 중앙 처리 유닛들(특정 예로써, 중앙 처리 유닛들(CPUs)/플랫폼들, 알고리즘들, 및 그것들의 구현들)과 완전히 독립적이며, 임의의 ECC/스크램블 메커니즘을 사용하는 임의의 시스템에 적용될 수 있어서 시스템에 광범위하게 적용되는 것을 가능케 한다. 다시 말해서, 커맨드 어드레스 매체는 데이터 전송 매체를 활용하는 대신에, 커맨드들 또는 커맨드 패킷들을 메모리 채널 기반의 NVM-DIMM 시스템으로 전송하기 위하여 사용될 수 있다. 실시 예들은 호스트 컴퓨터의 데이터 전송 매체의 독점적 구현들을 분리하는 유연성을 제공할 수 있다. 데이터 전송 매체의 독점적 구현들은 독점적 에러 정정 코드(ECC; error correct code), 스크램블링(scrambling), 및 스위즐링(swizzling)이 포함된 데이터 전송들을 포함할 수 있다.
다양한 실시 예들은 호스트 컴퓨터 또는 좀 더 상세하게는 호스트 중앙 처리 유닛으로부터의 보호 정보의 세부 사항을 인식할 필요 없이 메모리 채널을 구동하는 유연성을 가능하게 한다. 실시 예들은 커맨드 어드레스 매체 상에서 장치 커맨드들의 처리 및 전송을 가능하게 한다. 한편, 실시 예들은 호스트 컴퓨터 또는 호스트 중앙 처리 유닛이 전송을 위한 데이터 매체 상에서 ECC 보호화/스크램블화/스위즐화된 데이터와 같은 보호 정보를 여전히 전송하고 활용할 수 있게 한다.
이하의 실시 예들은 당업자가 본 발명을 사용하게 구현할 수 있도록 충분히 상세하게 설명된다. 다른 실시 예들이 본 발명을 기반으로 분명해질 수 있으며, 시스템, 프로세스, 또는 기계적인 변화들이 본 발명의 실시 예의 사상으로부터의 벗어남 없이 행해질 수 있음은 잘 이해될 것이다.
이하의 상세한 설명에서, 다양한 세부적인 설명들은 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러나, 실시 예들이 이러한 상세한 설명들 없이 실행될 수 있음은 이해될 것이다. 실시 예의 모호함을 피하기 위하여, 일부 잘 알려진 회로들, 시스템 구성들, 및 처리 단계들은 상세하게 설명되지 않는다.
시스템의 실시 예를 보여주는 도면들은 개략적인 도식이며, 계측되지 않는다. 특히, 일부 치수들은 표현의 명확성을 위한 것이며 도면에서 과장되어 도시된다. 유사하게, 비록 설명의 편의를 위하여 도면에서 유시한 성향들(orientation)이 도시되나, 도면들의 이러한 설명은 대부분 임의적인 것이다. 일반적으로, 실시 예들은 다양한 성향들로 동작될 수 있다. 실시 예들은 설명의 편의를 위하여 제1 실시 예, 제2 실시 예 등으로 번호가 매겨질 수 있으나, 실시 예들의 한정을 제공하거나 다른 중요성을 갖지 않는다.
본문에서 사용되는 "모듈(module)"의 용어는 용어가 사용되는 맥락에 따라 본 발명의 실시 예에서 소프트웨어, 하드웨어, 또는 그것들의 조합을 포함할 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자들, 또는 그것들의 조합일 수 있다. 또한, 모듈이 이하의 장치 청구항에서 기입된 경우, 모듈들은 장치 청구항들의 사상 및 목적들을 위한 하드웨어 회로를 포함하는 것으로 간주된다.
도 1을 참조하면, 본 발명의 실시 예에서, 통신 메커니즘들을 포함하는 컴퓨팅 시스템(100)의 블록도가 예시적으로 도시된다. 블록도는 호스트 컴퓨터(102)와 연결된 스토리지 시스템(101)을 도시한다.
이러한 실시 예에서, 호스트 컴퓨터(102)는 컴퓨팅 시스템(100)을 위한 연산 및 인터페이스 자원들을 제공할 수 있다. 호스트 컴퓨터(102)는 컴퓨팅 시스템(100)을 위한/에 대한 스토리지 자원들을 제공하거나 또는 스토리지 자원들과 인터페이싱할 수 있다. 스토리지 시스템(101)은 컴퓨팅 시스템(100) 또는, 특정한 예로서, 호스트 컴퓨터(102)를 위한 스토리지 용량 또는 확장된 스토리지 용량을 제공할 수 있다.
예시적인 실시 예로서, 호스트 컴퓨터(102)는 휘발성 메모리 인터페이스, 또는 좀 더 상세한 예로서, 듀얼 데이터 레이드(DDR; dual data rate) 휘발성 메모리 인터페이스와 같은 특정한 메모리 인터페이스를 통해 스토리지 시스템(101)과 통신할 수 있다. 유연성(flexibility)을 위하여, 컴퓨팅 시스템(100)은 호스트 컴퓨터(102) 및 스토리지 시스템(101)에 대한 다양한 조합들과 혼합 및 맞춰질 수 있다. 예를 들어, 컴퓨터 시스템(100)이 스토리지 시스템(101)을 위한 좀 더 많은 영구 메모리(예를 들어, 비휘발성 메모리, 좀 더 상세한 예로서, 솔리드 스테이드 디스크(SSD) 또는 플래시 메모리 장치들)를 갖는 것을 필요로 할지라도, 호스트 컴퓨터(102)는 앞서 언급된 DDR과 같은 휘발성 메모리와 함께 동작하도록 설계될 수 있다. 실시 예들은 호스트 컴퓨터(102)가 DDR 인터페이스의 물리적 계층과 같은 휘발성 메모리 인터페이스를 활용하면서도, 불휘발성 메모리인 스토리지 시스템(101)과 함께 동작하도록 할 수 있다.
설명의 편의를 위하여, 컴퓨팅 시스템(100)은 호스트 컴퓨터(102) 및 스토리지 시스템(101)과 조합(혼합 및 매칭)된 것으로써 설명된다. 그러나 컴퓨팅 시스템(100)에 대한 구성이 다를 수 있음은 이해될 것이다. 예를 들어, 호스트 컴퓨터(102)는 저장 기능을 제공하는데 필수적이지 않은 다른 타입의 시스템과 연결될 수 있다. 또한 예를 들어, 호스트 컴퓨터(102)는 휘발성 메모리 또는 DDR 인터페이스와 같은 스토리지 인터페이스 이외의 다른 물리적 계층 인터페이스들을 사용할 수 있다. 호스트 컴퓨터(102)는 DDR 이외의 다른 통신 프로토콜을 사용할 수 있다. 예시적으로, 호스트 컴퓨터(102)는 LAN(local area network), SAN(storage area network), 또는 MAN(metropolitan area network)와 같은 네트워크 프로토콜 인터페이스를 사용할 수 있다. 호스트 컴퓨터(102)는 무선뿐만 아니라 유선 인터페이스를 활용할 수 있다.
호스트 컴퓨터(102)의 설명으로 다시 돌아가서, 호스트 컴퓨터(102)는 다양한 방식으로 구현될 수 있다. 예시적으로, 호스트 컴퓨터(102)는 서버, 워크스테이션, 라우터, 데스크톱 컴퓨터, 모바일 컴퓨팅 장치, 또는 그것들의 조합일 수 있다. 호스트 컴퓨터(102)는 적어도 호스트 중앙 처리 유닛(104) 및 호스트 메모리(106)를 포함할 수 있다. 호스트 메모리(106)는 호스트 중앙 처리 유닛(104)과 연결될 수 있다.
호스트 메모리(106)는 호스트 컴퓨터(102)를 위한 데이터 스토리지 또는 명령어 코드를 제공할 수 있다. 예시적으로, 호스트 메모리(106)는 드라이버들(108) 및 어드레스 맵(110)을 포함할 수 있다. 드라이버들(118)은 호스트 컴퓨터(102)가 스토리지 시스템(101)뿐만 아니라 호스트 컴퓨터(102)에 대한 다른 기능들과 교류하기 위한 코드일 수 있다. 어드레스 맵(110)은 호스트 컴퓨터(102)가 스토리지 시스템(101)과 교류하기 위하여 활용될 수 있는 시스템 어드레스들에 대한 시스템 어드레스 정보를 제공할 수 있다.
좀 더 상세한 예로서, 도 1의 점선으로 도시된 바와 같이, 호스트 컴퓨터(102)는 어드레스 맵(110)과 함께 드라이버들(108)을 활용하여 커맨드들(130)을 커맨드 패킷(131)으로 변환할 수 있다. 커맨드 패킷들(131)은 스토리지 시스템(101)으로 보내질 수 있다. 커맨드들(130)은 호스트 컴퓨터(102)로부터 스토리지 시스템(101)으로 제공되는 기능적인 명령어들이다. 커맨드들(130)의 예들은 스토리지 시스템(101)에 데이터를 쓰기 위한 쓰기 커맨드들 또는 스토리지 시스템(101)으로부터 데이터를 읽기 위한 읽기 커맨드들을 포함한다. 커맨드들(130)의 다른 예들은 상태 쿼리 및 클리어 커맨드들을 포함한다. 커맨드 패킷들(131)은 스토리지 시스템(101)으로 전송될 커맨드들(130) 각각에 대한 일부들(portions for each of the commands)이다. 커맨드 패킷들(131)은 커맨드들(130)에 기반된 형식(formatting)을 포함할 수 있다. 커맨드들(130) 및 커맨드 패킷들(131)은 이하에서 더 설명될 것이다.
호스트 중앙 처리 유닛(104)은 호스트 컴퓨터(102)를 위한 실행 하드웨어 회로(execution hardware circuitry)를 제공할 수 있다. 호스트 중앙 처리 유닛(104)은 호스트 메모리(106)로부터 데이터 또는 코드를 회수(retrieve)할 수 있다.
설명의 편의를 위하여, 컴퓨팅 시스템(100)은 호스트 메모리(106)가 호스트 중앙 처리 유닛(104)으로부터 분리되고 구분되는 것으로 설명된다. 그러나, 컴퓨팅 시스템(100)이 다르게 구성될 수 있음은 이해될 것이다. 예를 들어, 호스트 중앙 처리 유닛(104)은 호스트 메모리(106)의 적어도 일부를 포함할 수 있다. 호스트 중앙 처리 유닛(104)은 드라이버들(108)의 적어도 일부를 포함할 수 있다. 어드레스 맵(110)은 호스트 중앙 처리 유닛(104)내에 적어도 부분적으로 존재할 수 있다.
호스트 중앙 처리 유닛(104)은 주변 인터페이스(112)를 포함할 수 있다. 주변 인터페이스(112)는 호스트 컴퓨터(102)로의 그리고 호스트 컴퓨터(102)로부터의 인터페이스 기능들을 제공할 수 있다. 예시적으로, 주변 인터페이스(112)는 호스트 컴퓨터(102)가 스토리지 시스템(101)을 활용하도록 할 수 있다.
호스트 중앙 처리 유닛(104)은 하드웨어 회로를 사용하여 다양한 다른 방식들로 구현될 수 있다. 예를 들어, 호스트 중앙 처리 유닛(104)은 프로세서, ASIC(application, specific integrated circuit), 임베디드 프로세서, 마이크로프로세서, 하드웨어 제어 로직, 하드웨어 FSM(finite state machine), DSP(digital signal processor), FPGA(field programmable gate array), 또는 그것들의 조합일 수 있다.
주변 인터페이스(112)는 하드웨어 회로를 사용하여 다양한 다른 방식들로 구현될 수 있다. 예를 들어, 주변 인터페이스(112)는 디지털 회로들, 아날로그 회로들, 또는 그것들의 조합을 사용하여 구현될 수 있다. 추가적인 예로서, 주변 인터페이스(112)는 로직 게이트들, 트랜지스터들, 또는 그것들의 조합을 사용하여 구현될 수 있다.
이러한 실시 예에서, 스토리지 시스템(101)은 호스트 인터페이스(114), 커맨드 블록(116), 컨트롤러(118), 및 메모리 인터페이스(120)를 포함할 수 있다. 호스트 인터페이스(114)는 스토리지 시스템(101) 및 호스트 컴퓨터(102) 사이의 통신 기능을 제공할 수 있다. 좀 더 상세하게는 호스트 인터페이스(114)는 주변 인터페이스(112)와의 통신 기능을 제공할 수 있다. 호스트 컴퓨터(102) 및 스토리지 시스템(101)은 커맨드 어드레스 매체(122) 및 데이터 매체(124)와 통신할 수 있다.
커맨드 어드레스 매체(122)는 커맨드들, 어드레스들, 및 제어의 통신을 제공할 수 있다. 커맨드 어드레스 매체(122)는 무선 또는 유선일 수 있다. 커맨드 어드레스 매체(122)는 양방향(bidirectional) 또는 단방향(unidirectional) 방식으로 동작할 수 있다. 커맨드 어드레스 매체(122)는 전 이중(full-duplex) 또는 단식(simplex)으로 동작할 수 있다.
데이터 매체(124)는 데이터의 통신을 제공할 수 있다. 데이터 매체(124)는 무선 또는 유선일 수 있다. 데이터 매체(124)는 양방향(bidirectional) 또는 단방향(unidirectional) 방식으로 동작할 수 있다. 데이터 매체(124)는 전 이중(full-duplex) 또는 단식(simplex)으로 동작할 수 있다.
호스트 인터페이스(114)는 다양한 방식으로 구현될 수 있다. 예를 들어, 호스트 인터페이스(114)는 디지털 회로들, 아날로그 회로들, 유한 상태 머신들, 프로그램 가능한 로직 또는 회로들, 프로세서 코어, 프로세서, 또는 그것들의 조합을 포함하는 하드웨어 회로를 사용하여 구현될 수 있다.
이러한 실시 예에서, 예시적으로, 커맨드 블록(116)은 호스트 컴퓨터(102)로부터의 커맨드 패킷들(131)을 처리한다. 커맨드 블록(116)은 커맨드 패킷들(131)을 처리하기 위하여 컨트롤러(118)와 교류할 수 있다. 커맨드 블록(116)은 메모리 인터페이스(120)로부터 데이터를 회수할 수 있다.
추가적인 예로써, 컨트롤러(118)는 스토리지 시스템(101)을 위한 인터페이스, 기능적인 제어, 또는 그것들의 조합을 제공할 수 있다. 좀 더 상세한 예로써, 컨트롤러(118)는 메모리 인터페이스(120)와 교류할 수 있다. 메모리 인터페이스(120)는 주변 메모리(126)로의 액세스를 제공한다. 이러한 실시 예에서, 컨트롤러(118)는 하드 디스크 드라이브(HDD; hard disk drive) 또는 플래시 메모리 장치, 또는 솔리드 스테이트 드라이브와 같은 불휘발성 메모리일 수 있는 주변 메모리(126)로의 액세스를 위한 커맨드들(130)을 실행할 수 있다.
컨트롤러(118)는 다양한 방식으로 구현될 수 있다. 예를 들어, 컨트롤러(118)는 프로세서, 프로세서 코어, ASIC, 임베디드 프로세서, 마이크로프로세서, 하드웨어 제어 로직, 하드웨어 FSM, DSP, FPGA, 또는 그것들의 조합으로써 구현될 수 있다. 추가적인 예로써, 컨트롤러(118)는 디지털 회로 또는 로직, 아날로그 회로, 또는 그것들의 조합과 같은 하드웨어 회로를 사용하여 구현될 수 있다.
호스트 인터페이스(114)에 대한 설명으로 돌아가서, 호스트 인터페이스(114)는 커맨드 패킷 생성기(CPG; command packet generator)(128), 호스트 쓰기 버퍼(132), 및 호스트 읽기 버퍼(134)를 포함할 수 있다. 커맨드 패킷 생성기(128)는 호스트 컴퓨터(102)로부터의 커맨드 패킷들(131)을 분석하거나 또는 생성한다. 커맨드 패킷 생성기(128)는 커맨드 어드레스 매체(122)에서 전달되는 정보(information carried on the command address medium)를 기반으로 커맨드 패킷(131)을 분석하거나 또는 생성한다. 이는 이하에서 상세하게 설명된다.
호스트 쓰기 버퍼(132)는 호스트 컴퓨터(102) 및 스토리지 시스템(101) 사이의 정보의 전송을 지원한다. 예시적으로, 호스트 쓰기 버퍼(132)는 커맨드 어드레스 매체(122), 데이터 매체(124), 또는 그것들의 조합으로부터 정보를 수신할 수 있다. 호스트 쓰기 버퍼(132)는 정보가 스토리지 시스템(101)의 다른 부분들에 의해 활용되고 회수되기 전에, 임시적인 스토리지로써 사용될 수 있다.
호스트 쓰기 버퍼(132)는 다양한 방식으로 구현될 수 있다. 예를 들어, 호스트 쓰기 버퍼(132)는 프로세서, 프로세서 코어, 마이크로프로세서, 하드웨어 제어 로직, 하드웨어 FSM, DSP, FPGA, 또는 그것들의 조합으로 구현될 수 있다. 호스트 쓰기 버퍼(132)는 랜덤 액세스 메모리(RAM; random access memory), 로직 레지스터, 또는 그것들의 조합과 같은 메모리 구조를 사용하여 구현될 수 있다. 좀 더 상세한 예로써, 호스트 쓰기 버퍼(132)는 선입선출(FIFO; first-in first-out) 기능, 연결 목록(linked list), 또는 큐(queue)를 사용하여 구현될 수 있다.
호스트 읽기 버퍼(134)는 호스트 컴퓨터(102) 및 스토리지 시스템(101) 사이의 정보의 전송을 지원할 수 있다. 예를 들어, 호스트 읽기 버퍼(134)는 커맨드 블록(116), 컨트롤러(118), 메모리 인터페이스(120), 또는 그것들의 조합으로부터 정보를 수신할 수 있다. 호스트 읽기 버퍼(134)는 커맨드 어드레스 매체(122), 데이터 매체(124), 또는 그것들의 조합으로 정보를 제공할 수 있다. 호스트 읽기 버퍼(134)는 정보가 호스트 컴퓨터(102)에 의해 활용되고 회수되기 전에 임시 스토리지로써 사용될 수 있다.
호스트 읽기 버퍼(134)는 다양한 방식으로 구현될 수 있다. 예를 들어, 호스트 읽기 버퍼(134)는 프로세서, 프로세서 코어, 마이크로 프로세서, 하드웨어 제어 로직, 하드웨어 FSM, DSP, FPGA, 또는 그것들의 조합으로 구현될 수 있다. 호스트 읽기 버퍼(134)는 RAM, 로직 레지스터들, 또는 그것들의 조합과 같은 메모리 구조들을 사용하여 구현될 수 있다. 좀 더 상세한 예로서, 호스트 읽기 버퍼(134)는 FIFO 기능, 연결 목록, 또는 큐를 사용하여 구현될 수 있다.
커맨드 블록(116)의 설명으로 돌아가서, 예시적으로, 커맨드 블록(116)은 커맨드 패킷 어셈블러(CPA; command packet assembler)(136), 커맨드 큐(138), 구성 상태 블록(configuration state block)(140), 메모리 쓰기 버퍼(142), 응답 버퍼(144), 또는 그것들의 조합을 포함할 수 있다. 커맨드 패킷 어셈블러(136)는 커맨드 패킷들(131)의 시퀀스 또는 서브시퀀스를 커맨드들(130) 중 하나의 전체 버전으로 누적할 수 있다. 이하에서, 커맨드 패킷 어셈블러(136)에 대하여 더욱 상세하게 설명된다.
커맨드 블록(116)은 다양한 방식으로 구현될 수 있다. 예를 들어, 커맨드 블록(116)은 프로세서, 프로세서 코어, ASIC, 마이크로프로세서, 하드웨어 제어 로직, 하드웨어 FSM, DSP, FPGA, 또는 그것들의 조합으로 구현될 수 있다. 예시적으로, 커맨드 블록(116)은 디지털 회로 또는 로직, 아날로그 회로, 또는 그것들의 조합과 같은 하드웨어 회로를 사용하여 구현될 수 있다.
이러한 실시 예에서, 커맨드 큐(138)는 커맨드들(130)의 전체 버전들을 위한 스토리지를 제공할 수 있다. 커맨드 큐(138)로부터의 커맨드들(130)은 컨트롤러(118)에 의해 실행될 수 있다. 컨트롤러(118)는 메모리 인터페이스(120)와 교류하여 커맨드들(130)의 실행을 완료할 수 있다.
이러한 실시 예에서, 구성 상태 블록(140)은 스토리지 시스템(101)을 구성하고, 스토리지 시스템(101)으로부터 상태 정보(141)를 회수하는 기능을 제공할 수 있다. 메모리 쓰기 버퍼(142)는 메모리 인터페이스(120)와 호스트 쓰기 버퍼(132), 컨트롤러(118), 커맨드 패킷 어셈블러(136), 커맨드 큐(138), 구성 상태 블록(140), 또는 그것들의 조합 사이의 정보의 전송을 지원할 수 있다. 예시적으로, 메모리 쓰기 버퍼(142)는 정보가 스토리지 시스템(101)의 다른 부분들에 의해 활용되고 회수되기 전에 임시 스토리지로써 사용될 수 있다.
응답 버퍼(144)는 호스트 읽기 버퍼(134) 및 스토리지 시스템(101)의 다른 부분들 사이의 정보의 전송을 지원한다. 예시적으로, 응답 버퍼(144)는 메모리 인터페이스(120), 구성 상태 블록(140), 컨트롤러(118), 또는 그것들의 조합으로부터 호스트 읽기 버퍼(134)로 정보를 제공할 수 있다.
이러한 실시 예는 호스트 중앙 처리 유닛(104)에 지속적으로 근접하게 데이터를 이동하거나 또는 또는 더욱 일반적으로, 특히 빅 데이터 시대에서 성능 향상, 전력 감소, 또는 그것들의 조합을 위하여, 호스트 중앙 처리 유닛(104)에 근접하게 데이터를 이동시키는 애플리케이션의 예일 수 있다.
실시 예들은 DDR과 같은 휘발성 메모리 인터페이스를 사용하면서, 현존하는 스토리지 시스템의 기능들을 유지하는 플렉서블 메모리 인터페이스를 제공한다. 다양한 실시 예들은 커맨드 어드레스 매체(122), 좀 더 상세하게는 불휘발성 메모리 듀얼 인라인 메모리 모듈(NVM-DIMM)을 위한 커맨드 및 어드레스(CA) 버스 기반의 프로토콜을 활용한다. NVM-DIMM을 위한 이러한 프로토콜은 호스트 중앙 처리 유닛(104)(특정 예로써, 중앙 처리 유닛들(CPUs)/플랫폼들, 알고리즘들, 및 그것들의 구현들)과 완전히 독립적이며, 임의의 ECC/스크램블 메커니즘을 사용하는 임의의 시스템에 적용될 수 있어서 시스템에 광범위하게 적용되는 것을 가능케 한다. 다시 말해서, 커맨드 어드레스 매체(122)는 데이터 매체(124)를 활용하는 대신에, 커맨드들(130) 또는 커맨드 패킷들(131)을 전송하기 위하여 사용될 수 있다. 실시 예들은 데이터 매체(124) 상의 호스트 컴퓨터(102)의 독점적 구현을 분리하는 유연성을 제공할 수 있다. 독점적 구현은 독점적 에러 정정 코드(ECC), 스크램블링, 및 스위즐링이 포함된 데이터 전송들을 포함할 수 있다.
이러한 실시 예의 좀 더 상세한 예로서, 컴퓨팅 시스템(100)은 데이터 매체(124) 대신에 커맨드 어드레스 매체(122)를 활용하여, 커맨드 패킷들(131)로써 커맨드들(130)을 호스트 컴퓨터(102)로부터 스토리지 시스템(101)으로 통신할 수 있다. 커맨드들(130)의 예들, 또는 상세한 예로써, 커맨드 패킷들(131)은 쓰기 데이터, 읽기 데이터, 읽기 상태, 구성 커맨드들, 클리어 커맨드들, 또는 그것들의 조합과 같은 SSD 커맨드들을 포함할 수 있다. 컴퓨팅 시스템(100) 또는 호스트 컴퓨터(102)는 커맨드 어드레스 매체(122) 상에서 커맨드들(130), 또는 좀 더 상세한 예로서, 커맨드 패킷들(131)을 통신하기 위하여, 드라이버들(108)을 활용하여 시스템 어드레스 및 어드레스 맵(110)에서 미리 정해진 어드레스 공간을 사용할 수 있다.
이러한 실시 예에서, 컴퓨팅 시스템(100)은 데이터 매체(124)를 활용하여 호스트 컴퓨터(102) 및 스토리지 시스템(101) 사이에서 데이터를 전송할 수 있다. ECC 인코딩, 스크램블링, 스위즐링 또는 그것들의 조합을 포함하는 데이터 매체(124) 상의 데이터와 연관된 다른 정보는 데이터로써 간주될 수 있고, 변형 없이 그리고, ECC, 스크램블링, 스위즐링의 상세한 내용을 인식할 필요 없이 스토리지 시스템(101)에 저장될 수 있다. 호스트 컴퓨터(102)는 이러한 데이터를 저장하기 위한 주변 메모리(126)의 메모리 영역과 같은, 데이터 어드레스 정보를 커맨드 어드레스 매체(122)를 통해 전송할 수 있다.
이러한 실시 예에서, 컴퓨팅 시스템(100)은 스토리지 시스템(101)에 의한 커맨드들(130)의 실행을 위하여 데이터 매체(124)를 통해 상태 정보(141)를 회수할 수 있다. 상태 정보(141)는 구성 상태 블록(140)으로부터 회수될 수 있다.
좀 더 상세한 예로써, 커맨드 어드레스 매체(122) 상의 커맨드들(130), 또는 상세한 예로써, 커맨드 패킷들(131)은 상태 쿼리, 커맨드 쿼리, 및 구성 읽기를 포함할 수 있다. 이러한 타입들의 커맨드들(130)은 커맨드 패킷 생성기(128), 커맨드 패킷 어셈블러(136), 또는 그것들의 조합을 통해 처리될 수 있다. 이러한 실시 예에서, 커맨드 패킷 어셈블러(136)는 한 번에 커맨드들(130) 중 하나를 처리한다. 커맨드 패킷들(131)의 모든 필드들이 커맨드 패킷 어셈블러(136)에 의해 처리된 경우, 전체 또는 완료된 커맨드(130)는 커맨드 큐(138)로 이동될 수 있다.
또한 커맨드 패킷 생성기(128)는 커맨드 어드레스 매체(122)로부터 어드레스 비트들을 분석할 수 있다. 어드레스 비트들의 예들은 뱅크 그룹, 뱅크, 로우, 및 컬럼 정보를 포함한다. 예시적으로, 구성 상태 블록(140) 내의 상태 정보(141)는 시스템 어드레스 공간을 재맵핑하는 어드레스 맵(110)을 활용하여 호스트 컴퓨터(102)에 의해 읽어지기 위해 직접적으로 액세스될 수 있다.
도 2를 참조하면, 본 발명의 실시 예에서, 도 1의 컴퓨팅 시스템(100)에 의해 활용되는 통신 기법을 위한 어드레스 맵(110)의 예가 좀 더 상세하게 도시된다. 앞서 언급된 바와 같이, 어드레스 맵(100)은 도 1의 호스트 컴퓨터(102)가 도 1의 스토리지 시스템(101)과 교류하도록 할 수 있다.
상세한 예로써, 호스트 컴퓨터(102)는 도 1의 드라이버들(108) 및 어드레스 맵(110)을 활용하여 도 1의 데이터 매체(124)가 아닌 도 1의 커맨드 어드레스 매체(122)를 통해 도 1의 커맨드들(130)을 통신할 수 있다. 커맨드 어드레스 매체(122)로부터의 커맨드들(130)은 도 1의 커맨드 패킷 생성기(128), 도 1의 커맨드 패킷 어셈블러(136), 또는 그것들의 조합에 의해 처리될 수 있다.
예시적으로, 스토리지 시스템(101)이 불휘발성 메모리를 포함할 수 있더라도, 도 2에 도시된 어드레스 맵(110)은 DDR 인터페이스를 위한 것이다. 어드레스 맵(110)은 뱅크 그룹(202) 또는 뱅크 그룹(202) 내의 뱅크들(204)을 위하여 조직화될 수 있다. 상세한 예로써, 뱅크 그룹(202)은 어드레스 맵(110) 내의 4 비트들로 표현될 수 있고, 뱅크들(204)은 '0'부터 'F'까지의 16 진법의 어드레스로 도시된다. 또한, 로우 및 컬럼 어드레스들은 DDR 어드레스를 위한 예에서와 같이 어드레스 맵(110)에서 제공될 수 있다. 도 1의 주변 메모리(126)의 세부 사항에 따라 로우 어드레스는 14 내지 18 비트들일 수 있고, 컬럼 어드레스는 10 비트일 수 있다. 그러나, 다른 크기들이 다른 실시 예들에서 사용될 수 있다.
이러한 실시 예에서, 어드레스 맵(110)은 다른 프로그램 영역들로 분할될 수 있다. 뱅크들(204) 중 하나는 쓰기 포트(206)로 전용될 수 있다. 쓰기 포트(206)는 호스트 컴퓨터(102)가 스토리지 시스템(101)에 데이터를 기입하도록 할 수 있다. 뱅크들(204) 중 다른 하나는 읽기 포트(208)로 전용될 수 있다. 읽기 포트(208)는 호스트 컴퓨터(102)가 스토리지 시스템(101)으로부터 데이터를 읽도록 할 수 있다.
이러한 실시 예에서, 뱅크들(204)의 다른 하나는 상태 읽기 포트(210)로 전용될 수 있다. 상태 읽기 포트(210)는 호스트 컴퓨터(102)가 스토리지 시스템(101)으로 보내진 커맨드들(130)에 대한 도 1의 상태 정보(141)를 읽도록 할 수 있다. 뱅크들(204) 중 또 다른 하나는 상태 구성 읽기 또는 클리어(212)로 전용될 수 있다. 상태 구성 읽기 또는 클리어(212)는 호스트 컴퓨터(102)가 스토리지 시스템(101)으로부터 구성을 읽거나 또는 스토리지 시스템(101)의 구성을 클리어하도록 할 수 있다.
이러한 실시 예에서, 어드레스 맵들(110)은 호스트 컴퓨터(102)로부터 스토리지 시스템(101)으로 복수의 커맨드 패킷(131)으로써 도 1의 커맨드들(130) 각각을 전달하기 위한 복수의 커맨드 포트들(214)을 포함할 수 있다. 커맨드 포트들(214) 각각은 복수의 뱅크들(204)을 갖는다. 0부터 5까지 번호가 기재된 복수의 뱅크들(204)은 포트 0.0부터 0.5까지 번호가 기재된 커맨드 포트 0을 종합적으로 나타낼 수 있다. 8부터 D까지 번호가 기재된 뱅크들(204)은 포트 1.0부터 1.5까지 번호가 기재된 커맨드 포트 1을 종합적으로 나타낼 수 있다.
이러한 실시 예에서, 호스트 컴퓨터(102)는 드라이버들(108)을 활용하여 호스트 컴퓨터(102)에 의한 스토리지 시스템(101)으로의 각 액세스가 어드레스 맵(110)의 적절한 뱅크들(204)로 변환되도록 보장한다. 상세한 예로써, 커맨드 패킷들(131)은 어드레스 맵(110)의 적절한 포트들로 맵핑되어 커맨드(130)를 전달할 수 있다.
표 1은 커맨드 패킷들(131)의 예를 보여준다. "필드(Field)"가 기재된 열은 커맨드 패킷들(131) 각각의 일부의 기능을 나타낸다. "너비(Width)"가 기재된 열은 특정 필드에 대한 비트들의 개수를 나타낸다. "Comments"가 기재된 열은 필드에 대한 기능적인 간략한 설명을 제공한다.
필드(Field) 너비(Width) 코멘트(Comments)
VALID_MASK 8 To protect invalid operation (because of garbage value)
STREAM_ID 8 For reassembling of separated data
CMD_ID 16 Command tag
FEATURE 16 Information about host interface
OPCODE 16 Operational code for the command
SECTOR_COUNT 16 Data block size for write
LBA 48 LBA. Considering block size
CRC 8 CRC for command, for signal delivery protection
STREAM_ID는 커맨드 패킷들(131)의 서브 시퀀스들을 하나의 전체 커맨드(130)로 조립하기 위하여 커맨드 패킷 어셈블러(136)에 의해 활용될 수 있다. CRC에 대한 약어는 순환 중복 검사(cyclic redundancy check)를 위한 것이나, 임의의 에러 검출 방식 또는 코드가 이 필드를 위하여 사용될 수 있다.
도 3을 참조하면, 도 3은 실시 예에서, 도 1의 컴퓨팅 시스템(100)에 의해 활용되는 통신 메커니즘을 사용하여 커맨드들(130)을 발행하는 흐름도의 예를 보여준다. 이러한 실시 예에서, 흐름도는 커맨드 발행(command issue)(302), 커맨드 전송(command transmission)(304), 커맨드 추출(command extraction)(306), 및 커맨드 조립(command assemble)(308)을 포함할 수 있다.
커맨드 발행(302)은 도 1의 호스트 컴퓨터(102)로부터 전송될 커맨드들(130)을 준비한다. 예시적으로, 호스트 컴퓨터(102) 또는 특정한 예로써, 호스트 중앙 처리 유닛(104)은 드라이버들(108)을 사용하여 커맨드들(130)을 처리할 수 있다. 이러한 처리는 도 2의 어드레스 맵(110)의 필드들로 적절하게 커맨드들(130) 각각을 분할하거나 나눌 수 있다. 이러한 처리는 커맨드들(130) 각각을 도 1의 커맨드 패킷들(131)로 분할하거나 나눌 수 있다. 상세한 예로써, 드라이버들(108)은 커맨드들(130) 각각을 메모리 액세스의 서브시퀀스 또는 커맨드들 패킷들(131)로 분할을 지휘하고, 커맨드 패킷들(131)을 어드레스 맵(110)의 적절한 포트들로 맵핑할 수 있다. 흐름은 커맨드 전송(304)으로 진행할 수 있다.
커맨드 전송(304)은 호스트 컴퓨터(102)로부터 커맨드들(130)을 전송한다. 예시적으로, 호스트 컴퓨터(102) 또는 좀 더 상세한 예로써, 호스트 중앙 처리 유닛(104)은 분할되거나 또는 나누어진 커맨드들(130) 또는 다시 말해서 커맨드 패킷들(131)을 스토리지 시스템(101)으로 전송할 수 있다. 호스트 컴퓨터(102)는 데이터 매체(124)가 아닌 커맨드 어드레스 매체(122)를 통해 도 2의 적절한 필드를 전송하기 위하여 커맨드 패킷들(131)을 뱅크들(204)로 전송할 수 있다. 유사하게, 스토리지 시스템(101)은 데이터 매체(124)가 아닌 커맨드 어드레스 매체(122)를 통해 커맨드 패킷들(131)을 수신한다.
도 3에 도시된 실시 예에서, 처리되는 커맨드(130)는 쓰기 커맨드이고, 커맨드 패킷들(131)은 0, 4, 1, 3, 5, 및 2의 번호로 기재된 뱅크들(204)에 도시되어 있다. 호스트 컴퓨터(102) 또는 호스트 중앙 처리 유닛(104)은 6개의 메모리 쓰기들을 0 내지 5의 번호가 기재된 뱅크들(204)에 대한 어드레스 맵의 각 커맨드 포트로 커맨드 어드레스 매체(122)를 통해 전송할 수 있다. 커맨드 포트들 또는 뱅크들(204) 각각은 읽기 커맨드들 또는 쓰기 커맨드들을 위하여 보류(reserved)될 수 있다.
호스트 컴퓨터(102)는 주변 메모리(126)로 직접 쓰기 또는 읽기를 정상적으로 여전히 수행할 수 있다. 흐름은 커맨드 추출(306)로 진행할 수 있다. 호스트 중앙 처리 유닛(104)으로부터의 데이터를 참조하는 직접 읽기 또는 쓰기는 ECC 인코드/디코드, 디스크램블/스크램블, 또는 스위즐링을 포함하는 것 없이 스토리지 시스템(101)으로 또는 스토리지 시스템(101)으로부터 읽고 쓸 수 있다.
커맨드 추출(306)은 호스트 컴퓨터(102)로부터 커맨드 패킷들(131)을 수신한다. 커맨드 추출(306)은 커맨드 어드레스 매체(122)를 통해 수신된 정보로부터 커맨드 패킷들(131)을 분석한다. 예시적으로, 스토리지 시스템(101), 좀 더 상세한 예로써, 호스트 인터페이스(114)는 커맨드 어드레스 매체(122)로부터 커맨드 패킷들(131)을 수신할 수 있다. 예시적인 실시 예로써, 도 1의 커맨드 패킷 생성기(136)는 커맨드 어드레스 매체(122), 도 1의 호스트 쓰기 버퍼(132), 또는 그것들의 조합으로부터 수신된 커맨드 패킷들(131)을 포함하는 정보를 분석하고 추출한다. 흐름은 커맨드 조립(308)으로 진행될 수 있다.
커맨드 조립(308)은 커맨드 패킷들(131)로부터 전체 커맨드(130)를 구성한다. 예시적으로, 도 1의 커맨드 블록(116) 또는 상세한 예로써, 도 1의 커맨드 패킷 어셈블러(136)는 커맨드 패킷들(131)을 커맨드 전송(304)에서 활용된 뱅크들(204)로부터의 뱅크 번호를 기반으로 정확한 순서로 배열한다. 커맨드 패킷들(131)은 커맨드 패킷(131) 내의 STREAM_ID 필드(표 1 참조)를 기반으로 배열될 수 있다.
또한 커맨드 조립(308)은 커맨드 패킷들(131) 각각 또는 커맨드 패키지 어셈블러(136)에 의해 조립된 커맨드(130)에 대한 에러 검출을 더 수행할 수 있다. 에러 검출은 표 1에 기재된 CRC 필드를 기반으로 수행될 수 있다. 에러 검출이 패스된 경우, 조립된 커맨드(130)는 도 1의 커맨드 큐(138)로 보내질 수 있다.
설명의 목적을 위하여, 커맨드 발행(302)으로부터 커맨드 조립(308)까지의 흐름도는 선형적이고 단방향의 흐름으로 도시된다. 그러나 흐름도가 다르게 될 수 있음은 잘 이해될 것이다. 예를 들어, 순서도의 동작들은 동시에 수행될 수 있다. 커맨드들(130) 중 하나가 커맨드 조립(308)에 의해 처리되는 동안, 커맨드들(130) 중 다른 하나는 커맨드 추출(306)에 의해 동시에 처리될 수 있다. 이 때, 커맨드 추출(306) 및 커맨드 조립(308) 모두는 스토리지 시스템(101)에서 수행될 수 있다. 또한 커맨드들(130)의 또 다른 하나는 커맨드 전송(304)뿐만 아니라, 커맨드 발행(302)에서 동시에 처리될 수 있다. 이러한 예는 호스트 컴퓨터(102)에서 수행된다.
동시에(concurrent)의 용어는 커맨드들(130) 중 하나가 도 3에 도시된 전체 흐름을 완료하는 것을 기다리고, 다른 커맨드(130)가 도 3의 흐름의 다른 스테이지에서 처리되기 전에 완료되는 것을 요구하지 않고, 동작들이 중첩되어 실행되는 것을 가리킨다. 유사하게, 어드레스 맵(110)의 다른 커맨드 포트들은 커맨드 전송(304)이 이전 커맨드(130)를 처리하는 것을 완료하기 전이라도, 커맨드 발행(302)에 의해 사용될 수 있다. 예시적인 실시 예로써, 커맨드 포트들 중 어느 하나가 다음 커맨드(130)를 위하여 사용될 수 있기 전에, 커맨드들(130) 중 하나가 커맨드 전송(304)으로부터 완벽히 제거되어야 할 경우, 하나의 커맨드(130)를 처리하는 것의 한정이 구현될 수 있다.
예를 들어, 흐름도는 반복들(iterations) 및 루프들(loops)을 포함할 수 있다. 커맨드 조립(308)에서 검출된 에러의 예에서, 커맨드(130)의 잘못된 버전(erroneous version)을 커맨드 큐(138)로 전송하는 대신에, 흐름은 커맨드 조립(308)으로부터 커맨드 발행(302), 커맨드 전송(304), 커맨드 추출(306) 또는 그것들의 조합으로 다시 진행할 수 있다.
도 4를 참조하면, 실시 예에서, 도 1의 컴퓨팅 시스템(100)에 의해 활용되는 통신 메커니즘을 사용하여 도 1의 상태 정보(141)를 회수하는 흐름도의 예가 도시된다. 표 2는 도 1의 구성 상태 블록(140)의 상태 정보(141)에 대한 예들을 포함한다.
필드(Field) 너비(Width) 코멘트(Comments) 타입(Type)
CQWPS 16 CMD Queue Start Pointer (example max 64K CMD entries) SQ
CQWPE 16 CMD Queue End Pointer SQ
DQWPS 16 Data Queue Start Pointer (example DB size of 32M and sector min size of 512) DQ
DQWPE 16 Data Queue End Pointer DQ
VALID 8 Cleared by host computer 102 when the end of read operation of user data. CQRead
SEC_MAP 8 Data Bit Map (example for 512 sector size): Valid sector (512B) location in 4KB CQRead
CMD_ID 16 CMD Tag. From CMD ID in CMD Area. CQRead
STATUS 16 Might be over provision and x10s in NVME) (only 4 states are defined in GMI CQRead
SEC_CNT 16 Sector Count: prepared data size based on sector size unit (512B or 4KB). CQRead
LBA 48 start point of prepared data (depends on the supporting max read size) CQRead
모든 CMD_ID는 스토리지 시스템(101)의 메모리 장치들을 구동하기 위하여 사용되는 커맨드를 나타낸다. 예를 들어, 커맨드들은 읽기, 쓰기, 상태 쿼리, 클리어, 또는 그것들의 조합일 수 있다. 모든 커맨드들은 미리 정의되고, 유일한 식별자로 할당될 수 있다.
도 4에 도시된 흐름도는 상태 정보(141)를 읽는 단계의 예이다. 이러한 예는 도 1의 스토리지 시스템(101)내에서 발생하는 처리(process)를 보여준다. 이러한 예에서, 커맨드 처리는 도 3과 같이 설명될 수 있고, 흐름도의 그 부분은 설명의 편의를 위하여, 도면에서 도시되지 않는다.
이러한 실시 예에서, 흐름도는 상태 준비(402), 상태 로드(404), 리던던시 맵(406), 및 상태 리턴(408)을 포함할 수 있다. 상태 준비(402)는 요청된 적절한 상태 정보(141)를 배정한다(direct). 상태 정보(141)의 예들은 표 2에 도시된다. 상태 로드(404)는 상태 요청을 위한 읽기 포트 레지스터(410)를 로드한다. 리던던시 맵(406)은 상태 정보(141)를 기반으로 에러 정정 또는 에러 검출을 위하여 사용될 수 있는 보호 정보(412)를 제공한다. 보호 정보(412)는 데이터의 스위즐링 및 스크램블링을 포함할 수 있다. 두 방법 모두는 용이하게 알려지지 않으며, 독점적일 수 있다. 상태 리턴(408)은 상태 정보(141)뿐만 아니라, 만약 있다면, 보호 정보(412)를 제공한다. 보호 정보(412)는 전형적으로 독점적이며, 실시 예들은 데이터가 ECC, 스크램블링, 스위즐링, 또는 그것들의 조합을 인식할 필요가 없는 데이터로써 스토리지 시스템(101)에 저장되게 할 수 있다.
실시 예들은 통신 매커니즘의 호스트 컴퓨터(102), 또는 좀 더 상세하게는 호스트 중앙 처리 유닛(104)으로부터 보호 정보(412)의 상세한 내역의 확인에 대한 요구 없이 통신 메커니즘을 동작하는 것을 유연하게 할 수 있다. 실시 예들은 커맨드 어드레스 매체(122) 상에서 커맨드들(130)의 전송 및 처리를 수행할 수 있다. 한편, 실시 예들은 호스트 컴퓨터(102) 또는 호스트 중앙 처리 유닛(104)이 데이터 매체(124) 상에서 보호 정보(412)를 전송하고 활용하도록 할 수 있다.
예시적으로, 도 1의 호스트 컴퓨터(102)는 도 3의 커맨드 발행(302)을 통해 쓰기 커맨드(130)를 발행함으로써 상태(status)를 요청할 수 있다. 도 3의 커맨드 전송(340)은 도 2의 커맨드 어드레스 매체(122) 상에서 상태 정보(141)를 위하여 커맨드(130), 좀 더 상세한 예로써, 커맨드 패킷들(131)을 요청되는 특정 상태 정보(141)의 적절한 식별자와 함께 전달할 수 있다. 이러한 실시 예로써, 식별자는 표 2에 기재된 상태 정보(141)를 위한 필드들 중 하나일 수 있다.
스토리지 시스템(101)은 도 3에 도시된 순서도의 적어도 일부를 레버리징(leveraging)하여 상태 정보(141)를 위한 커맨드(130)를 처리할 수 있다. 특정 예로써, 도 1의 커맨드 패킷 생성기(128)는 도 1의 커맨드 패킷(131)을 위하여 커맨드 어드레스 매체(122)로부터의 정보를 분할 또는 구분할 수 있다. 도 1의 커맨드 패킷 어셈블러(136)는 커맨드 패킷(131)을 정렬시킬 수 있다. 모든 조립 이후에, 커맨드(130)는 커맨드 패킷 어셈블러(136)로부터 구성 상태 블록(140)으로 전송될 수 있다.
이러한 예에서, 구성 상태 블록(140)은 상태 준비(402)를 수행할 수 있다. 커맨드(130)로부터의 식별자(identification)는 표 2에 도시된 바와 같이 상태 정보(141)를 위한 필드들 중 하나와 매칭될 수 있다. 식별자와 매칭된 상태 정보(141)는 선택될 수 있고, 스토리지 시스템(101)은 상태 정보(141)의 그 부분을 상태 로드(404)로 보낼 수 있다.
상태 로드(404)는 상태 정보(141)를 상태 정보 준비(402)로부터 읽기 포트 레지스터(410)로 로드할 수 있다. 예시적으로, 읽기 포트 레지스터(410)는 도 2의 어드레스 맵(110) 및 도 2의 상태 읽기 포트(210)를 통해 액세스될 수 있다. 예를 들어, 읽기 포트 레지스터(410)는 도 1의 응답 버퍼(144)의 일부이거나 또는 외부에 있을 수 있다. 또는 예시적으로, 읽기 포트 레지스터(410)는 도 1의 호스트 읽기 버퍼(134)의 일부이거나 또는 외부에 있을 수 있다. 흐름은 상태 로드(404)에서 리던던시 맵(406)으로 계속될 수 있다.
리던던시 맵(406)은 읽기 포트 레지스터(410) 내의 상태 정보(141)와 연관된 보호 정보(412)를 제공한다. 리던던시 맵(406)은 다양한 방식으로 보호 정보(412)를 제공할 수 있다. 예를 들어, 보호 정보(412)는 스토리지 시스템(101)에서 호스트 컴퓨터(102)로 제공된 상태 정보(141)를 트레이닝하는 것으로부터 획득될 수 있다. 트레이닝은 알려진 표 2의 상태 정보(141)에 대한 다양한 필드에 기반될 수 있고, 보호 정보(412)는 알려지지 않는다. 좀 더 상세한 예로써, 트레이닝은 도 1의 커맨드 블록(116), 도 1의 컨트롤러(118) 또는 그것들의 조합에 의해 수행될 수 있다. 알려진 상태 정보(141)를 활용하는 것은 무엇이 보호 정보(412)가 될 것인지에 대한 연산을 감안케하며, 이는 룩-업 테이블(LUT)에 저장될 수 있다. (Leveraging the known allows for the calculation of what would be the protection information 412, which can be stored in a look-up table (LUT). 보호 정보(412)는 상태 정보(141)의 값이 룩-업 테이블의 인덱스로써 사용될 수 있는 룩-업 테이블의 엔트리일 수 있다.
리던던시 맵(406)의 실행은 다양한 트리거들에 의해 호출될 수 있다. 예시적으로, 리던던시 맵(406)은 상태 정보(141)의 어떤 필드가 요청되는 지의 식별자를 특정하는 쓰기 기능으로써 커맨드(130)를 기반으로 수행될 수 있다. 추가적인 예로써, 리던던시 맵(406)은 이하에서 설명되는 상태 정보(141)를 읽기 위한 커맨드(130)를 기반으로 수행될 수 있다.
호스트 컴퓨터(102)는 상태 정보(141) 및 연관된 보호 정보(412)를 읽기 위하여 커맨드(130)를 발행할 수 있다. 예시적으로, 호스트 컴퓨터(102)는 커맨드 발행(302) 또는 커맨드 전송(304)을 사용하지 않고, 상태 정보(141)의 직접 읽기(direct read)를 수행할 수 있다. 직접 읽기는 커맨드 어드레스 매체(122) 상의 읽기 포트 레지스터(410)의 어드레스를 발행하는 것에 의해 호스트 컴퓨터(102)와 함께 수행될 수 있다. 읽기 포트 레지스터(410)가 도 1의 데이터 매체(124)를 통해 상태 정보(141) 및 연관된 보호 정보(412)를 반환하도록 상태 리턴(408)(status return)이 수행될 수 있다.
상세한 예로써, 커맨드(130)가 도 2 의 뱅크 그룹(202)(16진수 E)에 기입된 "RdStatus"이거나 또는 도 2의 상태 구성 읽기 또는 클리어(212)인 경우, 특정된 상태 정보(141)가 읽기 포트 레지스터(41)로 이동된다. 읽기 포트 레지스터(410)의 값이 LUT로부터 보호 정보(412)를 회수하기 위하여 사용된다. 상태 정보(141), 보호 정보(412), 또는 그것들의 조합은 구성 상태 블록(140), 호스트 읽기 버퍼(134), 또는 그것들의 조합으로 이동되어 호스트 컴퓨터(102)에 의해 읽혀질 수 있다. 커맨드(130)가 뱅크 그룹(202)(16진수 F)에 기입된 경우, 상태 정보(141), 보호 정보(412), 또는 그것들의 조합은 구성 상태 블록(140), 호스트 읽기 버퍼(134), 또는 그것들의 조합으로부터 읽혀 질 수 있다. 커맨드(130)가 뱅크 그룹(202)(16진수 E)에 기입된 "ClrStatus"인 경우, 상태 정보(141)의 부분들이 클리어된다.
도 5를 참조하면, 본 발명의 실시 예에서, 컴퓨팅 시스템(100)의 동작 방법의 순서도가 도시된다. 방법(500)은 블록(502)에서, 드라이버를 사용하여 커맨드를 커맨드 패킷으로 분할하는 단계; 블록(504)에서, 커맨드 패킷을 어드레스 맵으로 맵핑하는 단계; 및 블록(506)에서, 커맨드 어드레스 매체를 통해 어드레스 맵을 기반으로 커맨드 패킷을 전달하는 단계를 포함한다.
예시적으로, 블록(502)는 도 1의 호스트 컴퓨터(102) 또는 좀 더 상세한 예로써, 도 1의 호스트 중앙 처리 유닛(104)에 의해 수행될 수 있다. 예시적으로, 블록(504)는 호스트 컴퓨터(102) 또는 좀 더 상세한 예로써, 중앙 처리 유닛(104)에 의해 수행될 수 있다. 예시적으로, 블록(506)은 호스트 컴퓨터(102) 또는 좀 더 상세한 예로써, 도 1의 주변 인터페이스(112)에 의해 수행될 수 있다.
블록(506)은 어드레스 맵의 뱅크를 액세스하는 단계를 더 포함할 수 있다. 블록(506)은 상태 정보를 요청하기 위하여 어드레스 맵을 기반으로 쓰기를 위한 커맨드를 전달하는 단계를 더 포함할 수 있다. 방법(500)은 상태 정보의 읽기를 위한 추가 커맨드를 발행하는 단계를 더 포함할 수 있다.
방법(500)은 커맨드 어드레스 매체로부터의 커맨드 패킷을 분석하는 단계 또는 커맨드 어드레스 매체로부터의 커맨드 패킷으로부터 커맨드를 조립하는 단계를 더 포함할 수 있다. 방법(500)은 보호 정보를 연산하기 위하여 트레이닝하는 단계 또는 데이터 매체를 통해 보호 정보를 수신하는 단계를 더 포함할 수 있다.
방법(500)은 커맨드 패킷을 정렬하여 커맨드를 조립하는 단계 또는 데이터 매체를 통해 커맨드 패킷을 수신하지 않는 단계를 더 포함할 수 있다. 이러한 정렬은 도 1의 커맨드 블록(116)에 의해 실행될 수 있다. 방법(500)은 도 1의 스토리지 시스템(101)에 의해 불휘발성 스토리지를 제공하는 단계를 더 포함할 수 있다.
결과적 방법, 프로세스, 장치, 제품, 및/또는 시스템은 간단하고, 비용 효율이 높고, 복잡하지 않고, 효용 가치가 높고, 민감하고, 효율적이며, 잘 알려진 구성들을 적용함으로써 용이하게, 효율적이고, 경제적인 제조업, 애플리케이션 및 활용성을 위하여 구현될 수 있다. 본 발명의 실시 예의 다른 중요한 사상은 비용을 감소시키고, 시스템을 단순화하고, 성능을 향상시키는 역사적인 추세를 제공하고 가치있게 지원하는 것이다. 그 결과, 본 발명의 실시 예들의 이러한 그리도 다른 가치 있는 사항들은 기술의 상태를 적어도 다음 레벨로 더욱 향상시킬 수 있다.
본 발명이 특정 최상의 모드와 연관되어 설명되었으나, 다양한 변형들이 앞서 설명된 설명의 범위 내에서 당업자에 의해 수행될 수 있음은 잘 이해될 것이다. 따라서, 모든 이러한 변형들은 첨부된 클레임들의 범위에 포함되는 것으로 의도된다. 본문에 개시되거나 또는 첨부된 도면에 도시된 모든 사항들은 실시 예이고 제한되지 않는 의미인 것으로 해석될 수 있다.

Claims (20)

  1. 드라이버 및 어드레스 맵을 포함하는 호스트 메모리; 및
    상기 호스트 메모리와 연결되고, 상기 드라이버를 사용하여 커맨드를 커맨드 패킷으로 분할하고, 상기 커맨드 패킷을 상기 어드레스 맵으로 맵핑하고, 커맨드 어드레스 매체를 통해 상기 어드레스 맵을 기반으로 상기 커맨드 패킷을 전달하도록 구성되는 호스트 중앙 처리 유닛을 포함하는 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 호스트 중앙 처리 유닛은 쓰기를 상태 정보를 요청하기 위하여 상기 어드레스 맵을 기반으로 쓰기를 위한 상기 커맨드를 전달하고, 상기 상태 정보의 읽기를 위한 추가 커맨드를 발행하도록 구성되는 컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    상기 호스트 중앙 처리 유닛은 상기 어드레스 맵의 뱅크를 액세스하도록 구성되는 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 호스트 중앙 처리 유닛은 불휘발성 메모리 장치를 위한 휘발성 메모리 인터페이스를 통해 상기 커맨드 패킷을 전달하도록 구성되는 컴퓨팅 시스템.
  5. 커맨드 어드레스 매체로부터의 커맨드 패킷을 분석하도록 구성되는 호스트 인터페이스; 및
    상기 호스트 인터페이스와 연결되고, 상기 커맨드 패킷으로부터 커맨드를 조립하도록 구성되는 커맨드 블록을 포함하는 컴퓨팅 시스템.
  6. 제 5 항에 있어서,
    상기 커맨드 블록은 보호 정보를 연산하기 위한 트레이닝을 수행하도록 구성되는 컴퓨팅 시스템.
  7. 제 5 항에 있어서,
    상기 호스트 인터페이스는 데이터 매체를 통해 보호 정보를 수신하도록 구성되는 컴퓨팅 시스템.
  8. 제 5 항에 있어서,
    상기 커맨드 블록은 상기 커맨드 패킷을 정렬하여 상기 커맨드를 조립하도록 구성되는 컴퓨팅 시스템.
  9. 제 5 항에 있어서,
    상기 호스트 인터페이스는 데이터 매체를 통해 상기 커맨드 패킷을 수신하지 않도록 구성되는 컴퓨팅 시스템.
  10. 제 5 항에 있어서,
    상기 호스트 인터페이스는 불휘발성 메모리 장치를 위한 휘발성 메모리 인터페이스를 통해 상기 커맨드 패킷을 수신하도록 구성되는 컴퓨팅 시스템.
  11. 컴퓨팅 시스템의 동작 방법에 있어서,
    드라이버를 통해 커맨드를 커맨드 패킷으로 분할하는 단계;
    상기 커맨드 패킷을 어드레스 맵으로 맵핑하는 단계; 및
    커맨드 어드레스 매체를 통해 상기 어드레스 맵을 기반으로 상기 커맨드 패킷을 전달하는 단계를 포함하는 동작 방법.
  12. 제 11 항에 있어서,
    상기 커맨드 어드레스 매체로부터의 상기 커맨드 패킷을 파싱하는 단계를 더 포함하는 동작 방법.
  13. 제 11 항에 있어서,
    상기 커맨드 어드레스 매체로부터의 상기 커맨드 패킷으로부터 상기 커맨드를 조립하는 단계를 더 포함하는 동작 방법.
  14. 제 11 항에 있어서,
    보호 정보를 연산하기 위한 트레이닝을 수행하는 단계를 더 포함하는 동작 방법.
  15. 제 11 항에 있어서,
    데이터 매체를 통해 보호 정보를 수신하는 단계를 더 포함하는 동작 방법.
  16. 제 11 항에 있어서,
    상기 커맨드 패킷을 전달하는 단계는, 상태 정보를 요청하기 위하여 상기 어드레스 맵을 기반으로 쓰기를 위한 커맨드를 전달하는 단계를 포함하고,
    상기 동작 방법은
    상기 상태 정보의 읽기를 위한 추가 커맨드를 발행하는 단계를 더 포함하는 동작 방법.
  17. 제 11 항에 있어서,
    상기 커맨드 패킷을 전달하는 단계는 상기 어드레스 맵의 뱅크를 액세스하는 단계를 포함하는 동작 방법.
  18. 제 11 항에 있어서,
    상기 커맨드 패킷을 정렬하여 상기 커맨드를 조립하는 단계를 더 포함하는 동작 방법.
  19. 제 11 항에 있어서,
    데이터 매체를 통해 상기 커맨드 패킷을 수신하지 않는 단계를 더 포함하는 동작 방법.
  20. 제 11 항에 있어서,
    불휘발성 스토리지를 제공하는 단계를 더 포함하는 동작 방법.

KR1020160103061A 2015-12-17 2016-08-12 통신 메커니즘을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법 KR102338323B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562268669P 2015-12-17 2015-12-17
US62/268,669 2015-12-17
US15/049,879 2016-02-22
US15/049,879 US10437483B2 (en) 2015-12-17 2016-02-22 Computing system with communication mechanism and method of operation thereof

Publications (2)

Publication Number Publication Date
KR20170072779A true KR20170072779A (ko) 2017-06-27
KR102338323B1 KR102338323B1 (ko) 2021-12-10

Family

ID=59064310

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160103061A KR102338323B1 (ko) 2015-12-17 2016-08-12 통신 메커니즘을 포함하는 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (5)

Country Link
US (2) US10437483B2 (ko)
JP (1) JP6785629B2 (ko)
KR (1) KR102338323B1 (ko)
CN (1) CN106897247B (ko)
TW (1) TWI704453B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528414B2 (en) * 2017-09-13 2020-01-07 Toshiba Memory Corporation Centralized error handling in application specific integrated circuits
US10540219B2 (en) * 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits
DE102018112816A1 (de) * 2018-05-29 2019-12-05 Infineon Technologies Ag Adresscodierter Zugriff auf Speicher
TWI756810B (zh) * 2020-09-02 2022-03-01 瑞昱半導體股份有限公司 晶片與相關的晶片系統

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7304996B1 (en) * 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
KR20110052510A (ko) * 2009-11-10 2011-05-18 애플 인크. 주변 컴포넌트를 위한 커맨드 큐
US20140164676A1 (en) * 2012-12-10 2014-06-12 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
KR20150010798A (ko) * 2011-12-22 2015-01-28 인텔 코오퍼레이션 커맨드/어드레스 레지스터 디바이스 내에 저장된 데이터에의 액세스

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484235B1 (en) 1999-05-03 2002-11-19 3Ware, Inc. Methods and systems for dynamically distributing disk array data accesses
US6766377B1 (en) * 2000-08-24 2004-07-20 3Com Corporation Media gateway proxy
US7827386B2 (en) * 2003-06-30 2010-11-02 Intel Corporation Controlling memory access devices in a data driven architecture mesh array
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
KR100763352B1 (ko) 2005-05-10 2007-10-04 삼성전자주식회사 전용 데이터 및 컨트롤 버스들을 사용하는 메모리 시스템, 모듈들, 컨트롤러들 및 방법들
US7577760B2 (en) 2005-05-10 2009-08-18 Samsung Electronics Co., Ltd. Memory systems, modules, controllers and methods using dedicated data and control busses
CN100377065C (zh) * 2006-04-19 2008-03-26 华中科技大学 一种超大容量的虚拟磁盘存储系统
CN101636712B (zh) * 2006-12-06 2016-04-13 才智知识产权控股公司(2) 在存储控制器内服务对象请求的装置、系统和方法
US8402201B2 (en) * 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8424009B2 (en) * 2009-12-04 2013-04-16 Microsoft Corporation Lock resolution for distributed durable instances
WO2011161884A1 (ja) * 2010-06-25 2011-12-29 パナソニック株式会社 集積回路、コンピュータシステム、制御方法
US20130138915A1 (en) 2010-08-11 2013-05-30 Nec Corporation Data processing system, data processing method, and program
TWI483117B (zh) 2010-09-29 2015-05-01 Toshiba Kk 用於執行命令之裝置、主機控制器及用於執行命令之系統
US9575908B2 (en) 2011-02-08 2017-02-21 Diablo Technologies Inc. System and method for unlocking additional functions of a module
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US10359949B2 (en) 2011-10-31 2019-07-23 Apple Inc. Systems and methods for obtaining and using nonvolatile memory health information
CN102623069B (zh) * 2012-02-13 2014-09-03 山东华芯半导体有限公司 随机激励闪存模型验证方法
US9280497B2 (en) 2012-12-21 2016-03-08 Dell Products Lp Systems and methods for support of non-volatile memory on a DDR memory channel
US20150022040A1 (en) * 2013-07-22 2015-01-22 Frank Mikowychok Vibration imparting device for a concrete finishing tool
US9552261B2 (en) * 2014-01-31 2017-01-24 International Business Machines Corporation Recovering data from microslices in a dispersed storage network
KR102192198B1 (ko) * 2014-02-24 2020-12-17 삼성전자주식회사 전자 장치 및 그것의 통신 방법
CN105361285B (zh) * 2014-08-11 2017-05-10 段睿纮 可单手直接快速穿戴且稳定罩口的口罩结构
GB2549442A (en) * 2014-09-24 2017-10-25 Ibm Data packet processing
US10089023B2 (en) * 2015-06-23 2018-10-02 Western Digital Technologies, Inc. Data management for object based storage
US9530442B1 (en) * 2015-09-23 2016-12-27 Western Digital Technologies, Inc. Enhanced low overhead data protection in data storage drives
US10031674B2 (en) * 2015-10-07 2018-07-24 Samsung Electronics Co., Ltd. DIMM SSD addressing performance techniques
US10467155B2 (en) * 2015-10-26 2019-11-05 Micron Technology, Inc. Command packets for the direct control of non-volatile memory channels within a solid state drive

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7304996B1 (en) * 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
KR20110052510A (ko) * 2009-11-10 2011-05-18 애플 인크. 주변 컴포넌트를 위한 커맨드 큐
KR20150010798A (ko) * 2011-12-22 2015-01-28 인텔 코오퍼레이션 커맨드/어드레스 레지스터 디바이스 내에 저장된 데이터에의 액세스
US20140164676A1 (en) * 2012-12-10 2014-06-12 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device

Also Published As

Publication number Publication date
CN106897247B (zh) 2022-12-06
KR102338323B1 (ko) 2021-12-10
US11099750B2 (en) 2021-08-24
CN106897247A (zh) 2017-06-27
JP2017111807A (ja) 2017-06-22
US20190272111A1 (en) 2019-09-05
US20170177247A1 (en) 2017-06-22
US10437483B2 (en) 2019-10-08
JP6785629B2 (ja) 2020-11-18
TWI704453B (zh) 2020-09-11
TW201729103A (zh) 2017-08-16

Similar Documents

Publication Publication Date Title
KR102358477B1 (ko) 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
US11099750B2 (en) Computing system with communication mechanism
US8990462B2 (en) Storage device, computing system including the same and data transferring method thereof
US9304938B2 (en) Storage device and data transferring method thereof
KR100881187B1 (ko) 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
US6549978B2 (en) Method for storage controllers with different data formats to access common storage configuration information
US11061591B2 (en) Storage device processing stream data, system including the same, and operation method thereof
CN105190524A (zh) 用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法
US11669487B2 (en) Secondary device detection using a synchronous interface
US10133492B2 (en) Electronic system with interface control mechanism and method of operation thereof
US7114014B2 (en) Method and system for data movement in data storage systems employing parcel-based data mapping
US7818472B2 (en) Repeat CCW count argument for device command word processing
US7886105B2 (en) Combined fibre channel and SAS host bus adapter
US11875064B2 (en) Solid state drive supporting both byte addressable protocol and block addressable protocol
CN117331866A (zh) 控制器高速缓存架构

Legal Events

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