KR102564163B1 - 비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법 - Google Patents

비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법 Download PDF

Info

Publication number
KR102564163B1
KR102564163B1 KR1020180077391A KR20180077391A KR102564163B1 KR 102564163 B1 KR102564163 B1 KR 102564163B1 KR 1020180077391 A KR1020180077391 A KR 1020180077391A KR 20180077391 A KR20180077391 A KR 20180077391A KR 102564163 B1 KR102564163 B1 KR 102564163B1
Authority
KR
South Korea
Prior art keywords
command
commands
host
ssd device
submission queue
Prior art date
Application number
KR1020180077391A
Other languages
English (en)
Other versions
KR20190120041A (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 KR20190120041A publication Critical patent/KR20190120041A/ko
Application granted granted Critical
Publication of KR102564163B1 publication Critical patent/KR102564163B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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)
  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명의 다양한 실시예는 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌을 핸들링하는 방법을 개시한다. 상기 방법은, 호스트 서브미션 큐로부터 호스트 장치에 의해 제출된 하나 이상의 명령들을 인출하고, 상기 호스트 서브미션 큐로부터 인출된 하나 이상의 명령들 내 명령 ID 충돌이 있는지 검사하고, 상기 명령 ID 충돌이 검출된다면 SSD 장치 펌웨어에 대한 명령 ID 오류 인터럽트를 트리거링하고, 상기 장치 펌웨어로부터 명령 ID 충돌이 검출된 상기 명령에 대한 상기 호스트 장치로 추가 특수 정보와 함께 명령 응답을 제출하고, 명령 응답에 기초한 상기 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제하는 것을 포함한다.

Description

비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법{METHOD FOR HANDLING COMMAND ID CONFLICT SCENARIO IN NON-VOLATILE MEMORY EXPRESS(NVMe) BASED SOLID STATE DRIVE (SSD) CONTROLLER}
본 발명은 일반적으로 저장 시스템/SSD(Solid-State Drive)와 관련있고 더 자세하게는 베어 메탈(bare metal) 멀티-코어 PCIe(Peripheral Component Interconnect Express) 기반 SSD에서 명령 ID(Identifier) 충돌 시나리오를 핸들링하는 방법에 관한 것이다.
비휘발성 메모리 익스프레스(Non-Volatile Memory Express(NVMe)) 사양에 따라 명령을 전송하여 컨트롤러와 상호 작용할 수 있는 엔티티를 호스트라 정의할 수 있다. 비휘발성 메모리 익스프레스 또는 비휘발성 메모리 호스트 컨트롤러 인터페이스(Non-Volatile Memory Host Controller Interface(NVMHCI)) 사양은 PCIe 버스를 통해 연결된 비휘발성 저장 미디어에 엑세스하기 위한 논리적 장치 인터페이스 사양이다. 컨트롤러는 명령을 처리할 수 있는 단일 PCIe 기능과 연결되어 있으며 비휘발성 메모리 익스프레스 사양에 따라 호스트에 적절한 응답을 보낼 수 있다.
도 1a는 종래 기술에 따른, 다양한 구성 요소들을 도시하는 표준 장치 및 호스트 인터페이스(100)의 개략적인 블록도이다.
도 1a에 따르면, 호스트 인터페이스(100)는 SSD 컨트롤러로써 작용하는 비휘발성 메모리 익스프레스 저장 장치(102), 호스트(104) 및 사용자 공간상에서 실행되는 어플리케이션(106)을 포함한다. 호스트(104)와 비휘발성 메모리 익스프레스 장치(102)는 커널 공간에서 PCIe 버스를 통해 서로 상호 작용한다. 호스트(104)는 비휘발성 메모리 익스프레스 미니포트 드라이버(106), 윈도우 저장포트 드라이버(108), 윈도우 클래스 드라이버(110), 및 입력/출력(IO) 매니저(112)를 포함한다. 더욱이, 호스트(104)는 사용자 공간내에 하나 이상의 어플리케이션들(114)을 동작시킨다.
도 1b는 종래 기술에 따른, 호스트와 컨트롤러 사이의 상호 작용을 도시하는 개략도(120)이다.
도 1b에 따르면, 호스트(122) 및 컨트롤러(124)는 PCIe 버스(도시되지 않음)를 통해 서로 상호 작용한다. 복수의 프로세스들이 호스트(122)상에서 실행될 것이다. 호스트(122)는 명령을 제출하고 각 제출된 명령들의 상태를 모니터링하기 위한 큐들(queues)을 유지한다. 호스트(122)는 실행을 위한 관리 명령들을 제출하기 위해 그리고 장치(컨트롤러(124))에 의해 완료된 컴플리션들(completions)들을 얻기 위해 관리자 서브미션 큐 및 관리자 완료 큐 각각을 유지한다. 또한, 호스트 장치는 호스트(122)상에서 실행중인 복수의 어플리케이션들로부터 수신된 복수의 I/O 명령들/요청들을 모니터링하기 위해 I/O 제출 큐 1 및 I/O 완료 큐 1, I/O 제출 큐 2 및 I/O 완료 큐 2, I/O 제출 큐 N 및 I/O 완료 큐 N을 유지한다.
낸드 플래시 메모리를 포함하는 SSD는, 소비자 제품들부터 엔터프라이즈-급 컴퓨터 시스템들에 이르는 시스템들 내 저장 엔티티로써 일반적으로 사용된다. 일부 SSD 내의 비휘발성 메모리 익스프레스 호스트 컨트롤러들은 하나 이상의 호스트들 사이의 높은 처리량의 데이터 트래픽을 관리한다. 비휘발성 메모리 익스프레스와 같은, 호스트 컨트롤러 인터페이스 표준은, 많은 수의 작업이 순서에 관계없이 수행되도록 한다. 이는 멀티 코어 호스트 컨트롤러 SSD에서 어려운 문제가 나타날 수 있다.
비휘발성 메모리 익스프레스 사양들에 따르면, 비휘발성 메모리 익스프레스 기반 호스트 컨트롤러는 명령 ID 충돌 감지를 지원해야 한다. 명령 ID 충돌 상황은, 하나 이상의 명령이 동일한 명령 ID와 함께 본래 제출된 명령의 처리가 완료되기 이전 처리 범위로 올 때, 비휘발성 메모리 익스프레스 호환 SSD에서 발생한다. 이러한 시나리오들에서, 비휘발성 메모리 익스프레스 사양은 이점들과 함께 초기 명령을 처리하고 명령 ID 충돌 에러와 함께 동일하게 명령된 나머지 명령들을 처리하도록 지시한다.
완료 엔트리 내에 제출 큐 ID와 명령 ID만 존재하기 때문에, 어떤 명령 성공 응답이 왔는지 및 어떤 명령에 대해 명령 ID 충돌 오류 응답이 컨트롤러에 의해 보고 되었는지 구분하는 것은 호스트에게 불가능하다. 이 결과로써, 호스트가 응답에 기초한 명령과 관련한 대응하는 자원을 해제하는 것이 어려울 것이다. 자원들의 적절한 해제를 위해, 호스트는 모든 명령에 대한 완료들을 수신할 때까지 기다려야 한다.
전술한 관점에서, 상기 언급된 이슈들 및 문제점들을 해결하고 방법 및 해결책을 제공하기 위한 시도가 필요하다.
전술한 단점들, 불리함들 및 문제들이 본 명세서에서 다루어지며, 다음의 명세서를 읽고 연구함으로써 이해될 것이다.
본 발명이 해결하고자 하는 기술적 과제는 비휘발성 메모리 익스프레스에 기반한 SSD 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스에 기반한 SSD 컨트롤러 장치를 제공하는 것이다.
본 발명의 다양한 실시예들은 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법을 개시한다. 본 발명의 주요 목적은 멀티 코어 PCIe 기반 SSD 내 효과적인 명령 ID 충돌 검출 및 핸들링을 위한 시스템 및 방법을 제공하는 것이다.
본 발명의 일 실시예에 따르면, 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌을 핸들링하는 방법은, 호스트 서브미션 큐(Host Submission Queue(HSQ))로부터 호스트 장치에 의해 제출된 하나 이상의 명령들을, SSD 컨트롤러의 명령 인출(fetching) 유닛을 통해 인출하고, 호스트 서브미션으로부터 인출된 하나 이상의 명령들 내 명령 ID 충돌이 있는지, SSD 컨트롤러의 태그 할당(allocation) 유닛을 통해 검사하고, 만약 명령 ID 충돌이 검출된다면 SSD 장치 펌웨어(firmware(FW))에 명령 ID(Command ID(CID)) 에러 인터럽트를, 태그 할당 유닛을 통해 트리거링하고, 명령ID 에러 인터럽트들을 받자마자 하나 이상의 인출된 명령들의 명령 검증을 장치 펌웨어를 통해 수행하고, 장치 펌웨어로부터 태그 할당 유닛에 의해 검출된 명령 ID 충돌 명령에 대한 호스트 장치로 추가적인 특수 정보를 갖는 명령 응답을 명령 생성 유닛으로 제출하고, 명령 응답에 기초한 하나 이상의 명령들과 관련된 하나 이상의 자원들을 장치 펌웨어를 통해 해제하는 것을 포함한다.
본 발명의 일 실시예에서, 장치 펌웨어를 통해 명령 검증을 수행하는 것은, 장치 펌웨어를 통해, 동일한 명령 ID를 갖고 동일한 호스트 서브미션 큐 및 인출된 명령으로부터의 큐 슬롯 정보를 갖는 명령들 사이의 첫 번째 차이를 결정하기 위해, 장치 펌웨어를 통해 비교하는 단계를 포함한다.
본 발명의 일 실시예에 따라, 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌을 핸들링하는 방법은, 명령 ID 충돌이 검출되고 에러 응답이 호스트로 보내지는 장치 펌웨어 내 명령의 처리를 건너 뛰는 것을 더 포함한다.
본 발명의 일 실시예에 따라, 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌을 핸들링하는 방법은, 신택스 내 명령이 정확하고 SSD 컨트롤러에 의해 검출된 명령 ID 충돌이 없다면, 장치 펌웨어를 통해 하나 이상의 인출된 명령들을 처리하는 것을 더 포함한다.
본 발명의 일 실시예에 따라, 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌을 핸들링하는 방법은, 명령이 처리되면 완료(completion) 엔트리 내 명령 슬롯 정보가 장치 펌웨어를 통해 입력되는 것을 더 포함한다. 명령 슬롯 정보를 입력하는 방법은 명령이 처리되면 완료 엔트리 게시의 일부로써 명령과 관련된 하나 이상의 하드웨어 자원들을, 장치 펌웨어를 통해, 해제하는 것을 더 포함한다.
본 발명의 다른 실시예에 따르면, 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치는 호스트에 의해 하나 이상의 제출된 명령들을 호스트 서브미션 큐로 인출하는 명령 인출 유닛, 호스트 서브미션 큐로부터 하나 이상의 인출된 명령들 내 명령 ID 충돌이 있는지 검사하고 명령 ID 충돌이 검출된다면 명령 ID 에러 인터럽트를 SSD 장치 펌웨어로 트리거링하는 태그 할당 유닛, 명령 ID 에러 인터럽트들을 수신할 때 하나 이상의 인출된 명령들의 명령 검증을 수행하는 장치 펌웨어, 장치 펌웨어로부터 명령 ID 충돌이 태그 할당 유닛에 의해 검출된 명령에 대한 호스트로 추가적인 특수 정보를 갖는 명령 응답을 제출하는 응답 생성 유닛을 포함한다.
본 발명의 일 실시예에서, 비휘발성 메모리 익스프레스 기반 SSD 장치의 장치 펌웨어는 명령 응답에 기초한 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제하는 것을 더 포함한다.
전술한 내용은 일반적으로 본 발명의 다양한 양상을 개략적으로 설명하고, 뒤에 설명될 상세한 설명을 더 잘 이해할 수 있도록 돕는 역할을 한다. 이와 관련하여, 본 발명은 여기에 설명되고 도시된 사용 방법 또는 적용에 한정되지 않는다는 명백한 이해가 있어야한다. 본 명세서에 포함된 상세한 설명 또는 예시로부터 명백하거나 명백해지는 본 발명의 다른 장점 및 목적은 본 발명의 범위 내에 있는 것으로 의도된다.
본 발명의 실시예가 첨부된 도면에 도시되며, 전체 도면에서 동일한 도면 부호는 다양한 도면에서 대응하는 부분을 나타낸다. 본 명세서의 실시예는 도면을 참조한 다음의 설명으로부터 더 잘 이해될 것이다.
도 1a는 종래 기술에 따른, 다양한 구성 요소들을 도시하는 표준 호스트 및 장치 인터페이스의 개략적인 블록도이다.
도 1b는 종래 기술에 따른, 호스트와 컨트롤러 사이의 상호작용을 도시하는 개략도이다.
도 2는 본 발명의 일 실시예에 따른, 비휘발성 메모리 익스프레스 기반 SSD 내 명령 ID 충돌을 핸들링하는 방법을 도시하는 개략적인 흐름도이다.
도 3은 본 발명의 일 실시예에 따른, 개시된 신규한 자원 해제 접근을 이용하는 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링 하는 방법을 도시한 개략도이다.
도 4는 본 발명의 일 실시예에 따른, 비휘발성 메모리 익스프레스 컨트롤러 내 효율적인 명령 ID 충돌 핸들링 흐름 및 호스트의 자원 핸들링 메커니즘을 도시하는 개략도이다.
도 5는 본 발명의 일 실시예에 따른, 명령 ID 충돌 시나리오를 핸들링하는 동안 발생할 수 있는 핸들링 문제 이슈를 도시하는 개략도이다.
도 6은 본 발명의 일 실시예에 따른, 핸들링 명령 ID 충돌에 대한 장치/SSD의 하위 블록들을 도시하는 개략적인 블록도이다.
본 발명의 특정 특징이 일부 도면에 도시되어 있고 다른 도면에는 도시되지 않았더라도, 이는 각 특징이 본 발명에 따른 다른 특징 중 임의의 것 또는 모든 특징과 결합될 수 있기 때문에 오로지 편의상 행해진다.
본 발명은 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법을 제공한다. 본 발명의 실시예들에 대한 다음의 상세한 설명에서, 본 발명의 일부를 형성하고 본 발명이 실시될 수 있는 특정 실시예를 예시로 도시한 첨부 도면을 참조한다. 이러한 실시예들은 당업자가 본 발명을 실시할 수 있도록 충분히 상세하게 설명되어 있으며, 다른 실시예들이 이용될 수 있으며 본 발명의 범위를 벗어나지 않고 변경이 이루어질 수 있음을 이해해야한다. 따라서, 이하의 상세한 설명은 제한적인 의미로 해석되어서는 안되며, 본 발명의 범위는 청구 범위에 의해서만 정의된다.
본 명세서는 여러 위치에서 "하나" 또는 "일부" 실시예를 나타낼 수 있다. 이것은 각각의 그러한 참조가 동일한 실시예(들)에 있다는 것을 의미하지 않거나, 그 특징이 단일 실시예에만 적용된다는 것을 의미하지는 않는다. 상이한 실시예의 단일 특징은 또한 다른 실시예를 제공하도록 결합될 수 있다.
본 명세서에 사용된 바와 같이, 단수 형태는 달리 명시되지 않는 한, 복수 형태를 포함하고자 한다. 본 명세서에서 사용되는 경우 "포함하는", "갖는", "구성되는" 및/또는 "함유하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 구성 요소 및/또는 구성 요소의 존재를 특정하고, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에 사용된 바와 같이, "및/또는"이라는 용어는 하나 이상의 관련된 목록화된 항목의 임의의 조합 및 배열을 모두 포함한다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어(기술 용어 및 과학 용어 포함)는 본 개시 내용과 관련된 당업자가 일반적으로 이해하는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의된 용어와 같은 용어는 관련 기술의 맥락에서 의미와 일치하는 의미를 갖는 것으로 해석되어 야하고, 이상적인 또는 지나치게 형식적인 의미로 해석되지 않는 한, 명시적으로 본 명세서에 정의된다.
본 명세서의 실시예들 및 그 다양한 특징들 및 이점들의 상세한 설명은 첨부 도면들에 도시되고 이하의 상세한 설명에서 설명되는 비 제한적인 실시예들을 참조하여 더욱 완전하게 설명된다. 공지된 구성 요소 및 처리 기술의 설명은 본 명세서의 실시예를 불필요하게 불명료하게 하지 않도록 생략되었다. 본 명세서에서 사용 된 예는 본 명세서의 실시예가 실시될 수 있는 방법의 이해를 용이하게 하고 당업자가 본 명세서의 실시예를 실시할 수 있도록 하기 위한 것이다. 따라서, 실시예는 본원의 실시 양태의 범위를 제한하는 것으로 해석되어서는 안 된다.
본 발명의 일 실시예에 따라, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법이 본 명세서에 설명된다.
본 발명의 일 실시예에 따르면, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 호스트 서브미션 큐 내 호스트에 의해 제출된 하나 이상의 명령들을, SSD 컨트롤러의 명령 인출 유닛을 통해 인출하는 것을 포함한다. 호스트는 SSD 컨트롤러에 의해 실행될 필요가 있는, 호스트 서브미션 큐 내 존재하는 하나 이상의 명령들을 갖는다. 호스트는 실행을 위해 호스트 서브미션 큐 내 명령들의 존재를 나타내는 초인종 고리 형태로 SSD 컨트롤러에 알림을 전송한다. 본 발명의 일 실시예에서, 본 발명의 범위를 벗어나지 않으면서, 알려진 알림 메시지 중 임의의 것이 SSD 컨트롤러를 알리는데 사용될 수 있다. 실행을 필요로 하는 명령들이 있음을 확인하고, SSD 컨트롤러의 명령 인출 유닛은 호스트 서브미션 큐에 액세스하고 호스트 서브미션 큐 내 존재하는 하나 이상의 명령들을 인출한다.
또한, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 호스트 서브미션 큐로부터 하나 이상의 패치된 명령들 내 어떤 명령 ID 충돌이 있는지 SSD 컨트롤러의 태그 할당 유닛을 통해 검사하는 것을 포함한다. 하나 이상의 명령들을 인출하면, 명령 인출 유닛은 인출된 명령들을 SSD 컨트롤러의 태그 할당 유닛으로 전송한다. 태그 할당 유닛은, 명령 실행의 범위 동안 두 개의 명령들이 동일한 명령 ID를 가질 수 없기 때문에, 하나 이상의 명령들을 수신하고, 호스트 서브미션 큐로부터 배치된 하나 이상의 명령들 사이에서 명령 ID 충돌이 있는지 검사한다.
또한, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 명령 ID 충돌이 검출된다면 명령 ID 에러 인터럽트를 SSD 장치 펌웨어에 트리거링하는 태그 할당 유닛을 포함한다. 만약 호스트 서브미션 큐로부터 패치된 명령들과 명령 ID가 충돌하면, 명령들에 자원들이 할당될 것이고 그 뒤 실행될 것이다. 만약 어떤 명령 ID 충돌들이 태그 할당 유닛에 의해 식별된다면, 태그 할당 유닛은 장치 펌웨어에 대해 같음을 알린다. 명령 ID 충돌의 존재를 식별하면, 태그 할당 유닛은 명령 ID 에러 인터럽트를 SSD 장치 펌웨어에 트리거한다.
또한, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 명령 ID 에러 인터럽트들을 받자마자 하나 이상의 인출된 명령들의 명령 검증을 수행하는 장치 펌웨어를 포함한다. 태그 할당 유닛에 의해 명령 ID 에러 인터럽트를 장치 펌웨어로 트리거링하면, 장치 펌웨어는 명령 ID 에러 인터럽트들을 받자마자 하나 이상의 인출된 명령들의 명령 검증을 수행한다. 본 발명의 일 실시예에서, 장치 펌웨어에 의해 명령 검증을 수행하는 것은, 동일한 명령 ID와 동일한 호스트 서브미션 큐 및 인출된 명령의 큐 슬롯 정보를 갖는 명령들 간의 첫 번째 차이를 판별하기 위해, 장치 펌웨어가 하나 이상의 인출된 명령들을 비교하는 것을 포함한다.
또한, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 응답 생성 유닛이 장치 펌웨어로부터 태그 할당 유닛에 의해 검출된 명령 ID 충돌 명령에 대한 호스트로 추가적인 특별 정보를 갖는 명령 응답을 제출하는 것을 포함한다. 명령 검증을 수행할 때, 장치 펌웨어는 응답 생성 유닛에 대해 수행된 검증을 위해 명령 응답과 함께 추가적인 특별 정보를 제공한다. 응답 생성 유닛은 추가적인 특수 정보와 함께 명령응답을 명령 ID 충돌이 검출된 명령에 대한 호스트에 제출한다.
또한, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 장치 펌웨어가 명령 응답에 기초한 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제하는 것을 포함한다. 수행된 검증과 획득된 명령 응답에 기초하여, 장비 펌웨어는 명령 ID 충돌이 검출되고 명령 ID 오류 인터럽트가 트리거된 명령들과 관련된 자원들을 식별한다. 명령 응답에 기초하여, 장치 펌웨어는 명령 ID 충돌이 검출된 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제한다.
본 발명의 일 실시예에서, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 명령 ID 충돌 검출의 일부로써 다가온 인터럽트 핸들링 동안 진행된 필수적인 핸들링으로써 검출된 명령 ID 충돌 장치 펌웨어 내 명령의 처리를 스킵하는 것을 포함한다.
본 발명의 다른 실시예에서, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 신택스 내 명령이 정확하고 SSD 컨트롤러에 의해 감지된 명령 ID 충돌이 없다면, 장치 펌웨어가 하나 이상의 명령들을 처리하는 것을 포함한다.
본 발명의 다른 실시예에서, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 명령을 처리하면 장치 펌웨어가 완료 엔트리 내 명령 슬롯 정보를 입력하는 것을 포함한다.
본 발명의 다른 실시예에서, 비휘발성 메모리 익스프레스 기반 SSD 컨트롤러 내 명령 ID 충돌 시나리오를 핸들링하는 방법은 명령이 처리되면 완료 엔트리 게시의 일부로써 명령과 관련된 하나 이상의 하드웨어 자원들을 장치 펌웨어가 해제하는 것을 포함한다.
본 발명의 다른 실시예에 따라, 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치는 명령 인출 유닛, 태그 할당 유닛, 장치 펌웨어, 및 응답 생성 유닛을 포함한다. 본 발명의 일 실시예에 따르면, 명령 인출 유닛은 호스트에 의해 하나 이상의 명령들을 호스트 서브미션 큐로 제출한다.
또한, 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치의 태그 할당 유닛은 호스트 서브미션 큐로부터 인출된 하나 이상의 명령들 내 명령 ID 충돌이 있는지 검사한다. 또한, 태그 할당 유닛은 명령 ID 충돌이 감지되면 명령 ID 오류 인터럽트를 SSD 장치 펌웨어에 트리거링한다. 또한, 장치 펌웨어는 명령 ID 오류 인터럽트들을 수신하고 하나 이상의 인출된 명령들의 명령 검증을 수행한다.
또한, 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치의 응답 생성 유닛은 장치 펌웨어로부터 태그 할당 유닛에 의해 검출된 명령 ID 충돌 명령에 대한 호스트로 추가적인 특수 정보와 함께 명령 응답을 제출한다. 또한, 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치의 장치 펌웨어는 명령 응답에 기초하여 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제한다.
도 2는 본 발명의 일 실시예에 따른, 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌을 핸들링하는 방법을 도시하는 개략적인 흐름도(200)이다.
흐름도(200)에 따르면, 단계(202)에서, 호스트 서브미션 큐로부터 호스트를 통해 제출된 하나 이상의 명령들을 SSD 컨트롤러의 명령 인출 유닛이 인출한다. 또한, 단계(204)에서, 호스트 서브미션 큐로부터 하나 이상의 인출된 명령들 내 명령 ID 충돌이 있는지 SSD 컨트롤러의 태그 할당 유닛이 검사한다. 또한, 단계(206)에서, 명령 ID 충돌이 검출된다면 태그 할당 유닛은 명령 ID 오류 인터럽트를 SSD 장치 펌웨어에 트리거한다.
또한, 단계(208)에서, 장치 펌웨어는 명령 ID 오류 인터럽트들을 수신하고 하나 이상의 인출된 명령들의 명령 검증을 수행한다. 또한, 단계(210)에서, 응답 생성 유닛은 장치 펌웨어로부터 태그 할당 유닛에 의해 검출되는 명령 ID 충돌 명령에 대한 호스트 장치로 추가적인 특수 정보와 함께 명령 응답을 제출한다. 또한, 단계(212)에서, 장치 펌웨어는 명령 응답에 기초하여 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제한다.
도 3은 본 발명의 일 실시예에 따른, 개시된 신규의 자원 접근을 이용한 비휘발성 메모리 익스프레스 기반 SSD 내 명령 ID 충돌 핸들링을 위한 방법을 도시한 개략도(300)이다.
도 3은 명령 ID 충돌의 발생이 있음을 알게 되었을 때 하나 이상의 명령들에 대한 지능형 자원 접근을 도시한다.
개략도(300)에 따르면, 단계(302)에서, 호스트에 실행중인 하나 이상의 어플리케이션들과 관련된 하나 이상의 명령들이 호스트 서브미션 큐 내에 저장된다. 호스트는 실행이 필요한 명령들의 존재를 나타내는 초인종 링과 함께 SSD 컨트롤러에 메시지를 전송한다. 호스트로부터 초인종 링 지시를 수신하면, 명령들은 SSD 컨트롤러의 명령 인출 유닛을 통해 인출될 수 있다.
또한, 단계(304)에서, 태그 할당 유닛은 호스트 서브미션 큐로부터 수신된 하나 이상의 명령들을 식별하고 하나 이상의 수신된 명령들의 명령 ID를 검사한다. 태그 할당 유닛은 수신된 명령들 내 명령 ID 충돌의 발생이 있는지, 그들의 명령 ID들의 두 개 이상의 명령들이 동일한 명령 ID들인지 식별하기 위해 하나 이상의 명령들의 명령 ID에 대해 검사한다.
또한, 단계(306)에서, 태그 할당은 호스트 서브미션 큐로부터 수신된 명령들 사이에 명령 ID 충돌의 발생이 있는지 식별하고 따라서 명령 ID 충돌의 발생이 있는 명령들을 식별하고 명령 ID 오류 인터럽트를 SSD 장치 펌웨어에 트리거한다. 인터럽트는 장치 펌웨어에 충돌 발생 및 동일한 효율적인 핸들링에 경고하도록 트리거된다.
또한, 단계(308)에서, 장치 펌웨어는 명령 ID 오류 인터럽트를 명령 ID 충돌 알림으로 수신하고 명령 ID 오류 인터럽트를 특별한 경우로 취급한다. 명령 ID 오류 인터럽트를 핸들링하는 동안, 장치 펌웨어는 동일한 호스트 서브미션 큐로부터 동일한 명령 ID를 갖는 예를 들어, DW0부터 DW15의 명령들 사이의 첫 번째 차이에 대한 명령들을 비교하는 명령 검증을 수행한다. 첫 번째 차이를 비교하는 동안, 첫 번째 일치하지 않는 DW 위치는 CQ 엔트리의 DW0에 제공될 것이고 그 내용은 명령 ID 충돌 오류와 함께 보고될 명령에 대한 CQ(command request queue) 엔트리의 DW1에 제공될 것이다. 또한, DW0는 명령이 인출된 큐(예를 들어, 호스트 서브미션 큐) 내 슬롯 정보를 포함한다. 차이를 확인하면, 장치 펌웨어는 명령 ID 충돌이 검출된 명령에 대한 추가 정보(예를 들어, 명령 ID 충돌이 검출된 명령에 대한 호스트 서브미션 큐 슬롯 정보)와 함께 응답을 생성한다. 응답 생성 유닛은 장치 펌웨어에 의해 생성된, 명령 ID 충돌이 검출된 명령에 대한 추가 정보를 포함하는 응답을 호스트로 전송한다.
또한, 단계(310)에서, 장치 펌웨어는 이미 전송된 명령을 표시하므로 장치 펌웨어에서 정상적인 처리를 위해 건너뛸 수 있다. 또한, 단계(312)에서, 장치 펌웨어는 명령의 장점에 기초한 들어오는 명령을 처리한다. 또한, 단계(314)에서, 신택스 내 명령이 정확하고 장치 펌웨어에 의해 표시된 오류가 없다면, 명령은 다음 하드웨어 유닛과 명령 처리를 위한 장치 펌웨어 파이프라인 단계들로 보내진다. 그러나, 명령이 명령 ID 오류로 표시되고 그에 대한 인터럽트가 트리거된 경우, 단계(316)에서, 장치 펌웨어는 응답이 인터럽트의 일부로써 더 이른 단계로 응답이 전송됨에 따라 이것의 처리를 스킵한다. 또한, 장치 펌웨어는 명령 응답에 기초하여 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제한다.
도 4는 본 발명의 일 실시예에 따른, 비휘발성 메모리 익스프레스 컨트롤러 내 효율적인 명령 ID 충돌 핸들링 흐름과 호스트의 자원 핸들링 메커니즘을 도시하는 개략도(400)이다.
개략도(400)에 따르면, 하나 이상의 어플리케이션들이 호스트(402)에서 실행되고, 하나 이상의 명령들(C1, C2, C3,?, Cn)이 수신되고 호스트 서브미션 큐에 저장된다. 명령들(C1, C2, C3,?, Cn) 각각에 대해, 호스트(402)는 명령들의 실행을 위해 미리 결정된 자원들을 예약한다. 호스트(402)는 초인종 링을 통해 처리될 필요가 있는 명령들(C1, C2, C3,?, Cn)에 대해 SSD 컨트롤러(404)에 알린다.
SSD 컨트롤러(404)는 명령들을 수신하고 SSD 컨트롤러(도시되지 않음)의 태그 할당 유닛은 수신된 명령들의 명령 ID들과 충돌이 있는지 검사한다. 검사 후, 태그 할당 유닛은 명령 C1이 충돌을 갖는지 식별하고, 따라서 명령 ID 에러 인터럽트를 트리거하고 수신된 명령 C1 내 명령 ID 충돌의 존재에 대해 장치 펌웨어(406)에 알린다. 명령 ID 충돌을 수신하면, 장치 펌웨어(406)는 명령 C1을 처리한다. 검사에 기초하여, 명령(C1)에 대한 응답을 생성하는 장치 펌웨어(406)는 명령의 특별한 핸들링(408)을 수행한다(응답은 특수 추가 정보를 포함).
장치 펌웨어(406)는 추가 정보와 함께 응답을, 호스트(402)에 응답을 전송하는 SSD 컨트롤러(도시되지 않음)의 응답 생성 유닛으로 전송한다. 호스트(402)는 추가 정보와 함께 응답을 수신한다. 또한, 호스트(402)는 장치 펌웨어(406)이 충돌이 검출되지 않은 명확한 정보를 제공한, 다른 명령들에 대한 정보를 수신한다. 다른 명령들에 대한 정보를 수신하면, 호스트(402)는 충돌이 식별된 명령 C1에 대해 할당된 자원들을 해제하고 다른 명령들(C2, C3, ?, Cn)에 자원들을 할당한다.
기존 방법들에서, 호스트는 장치에 제출하는 각 명령들에 대해 메모리를 할당한다. 기존 방법들에서, 호스트 장치는 동일한 SQ(Submission Queue)로부터 동일한 명령 ID를 갖는 모든 명령들에 대해 호스트가 응답을 얻을 때까지 명령들과 함께 관련된 자원들을 해제할 수 없다.
본 발명의 일 실시예에서, 명령 ID 충돌 시나리오는 명확히 할당된 자원들을 위해 호스트에 모든 필수적인 정보를 제공함으로써 핸들링된다. 호스트 장치가 명령 ID 충돌 에러 응답에 대해 CQ 엔트리를 소모할 때, DW0 및 DW1의 데이터를 사용할 수 있고 명령에 의해 점유된 관련 자원들을 해제할 수 있다. 본 발명의 일 실시예를 통해, 호스트 측 자원 점유로 인한 메모리 부족이 방지된다. 또한, 본 발명의 일 실시예는 어떤 비휘발성 메모리 익스프레스 장치들 내 명령 ID 충돌 시나리오를 효율적으로 처리할 수 있다.
도 5는 본 발명의 일 실시예에 따른, 명령 ID를 핸들링하는 동안 발생할 수 있는 가능한 핸들링 이슈들을 도시한 개략도(500)이다.
개략도(500)에 따르면, 호스트(502)는 명령들(C1, C2, C3, C4, 및 C5)을 갖고 호스트 서브미션 큐(504)에 명령들을 제출한다. 장치(506)는 명령들(C1, C2, C3, C4, 및 C5)을 호스트 서브미션 큐(504)로부터 인출하고 인출된 명령들의 명령 ID들 내 충돌이 있는지 검사한다.
검사를 하면, 장치(506)는 명령들(C2, C3, 및 C4)가 C1과 명령 ID 충돌함을 식별한다. 식별된 명령 ID 충돌들에 기초하여, 장치(506)의 장치 펌웨어는 명령들을 수신하고 명령들(C1, C2, C3, C4, 및 C5)을 처리한다. 명령들(C1, C2, C3, C4, 및 C5)을 처리할 때, 장치(506)는 처리된 명령들에 대한 응답을 준비하고 호스트 컴플리션 큐(Host Completion Queue(HCQ))(508)에 넣는다. 호스트 컴플리션 큐(508) 내에서, 명령들(C2, C3, 및 C4)이 충돌들을 갖고, 충돌들을 갖는 명령들(C2, C3, 및 C4)과 관련된 자원들이 해제되고 명령(C1 및 C5)이 장치(506)를 통해 적절히 수행됨이 관찰될 수 있다.
도 6은 본 발명의 일 실시예에 따른, 명령 ID 충돌을 핸들링하기 위한 장치/SSD(600)를 도시하는 개략적인 블록도이다.
도면에 따르면, 장치(600)은 명령 인출 유닛(602), 태그 할당 유닛(604), 장치 펌웨어(606), 및 응답 생성 유닛(608)을 포함한다.
본 발명의 일 실시예에 따르면, 명령 인출 유닛(602)은 호스트(도시되지 않음)에 의해 제출된 하나 이상의 명령들을 호스트 서브미션 큐로 인출한다. 호스트로부터 명령들은 호스트 서브미션 큐에 저장되고 초인종 링 메시지는 호스트 서브미션 큐 내에 명령들이 존재한다는 정보를 장치(600)에 전송한다. 초인종 링을 수신하면, 명령 인출 유닛(602)은 호스트 서브미션 큐로부터 하나 이상의 명령들을 인출한다.
또한, 장치(600)의 태그 할당 유닛(604)은 호스트 서브미션 큐로부터 인출된 하나 이상의 명령들 내 명령 ID 충돌이 있는지 검사한다. 인출된 명령들 내 명령 ID 충돌이 있다고 식별되면, 태그 할당 유닛은 명령 ID 에러 인터럽트를 장치 펌웨어(606)에 트리거한다.
또한, 장치(600)의 장치 펌웨어(604)는 태그 할당 유닛(604)에 의해 트리거된 명령 ID 에러 인터럽트를 수신하고 하나 이상의 인출된 명령들의 명령 검증을 수행한다. 처리/명령 검증 동안, 장치 펌웨어(604)는 어떤 명령이 명령 충돌을 갖는지 수행된 검증에 기초해 식별하고, 명령 ID 충돌을 갖는 명령에 대해 응답과 추가 특수 정보를 준비한다.
또한, 장치(600)의 응답 생성 유닛(608)은 장치 펌웨어로부터 명령 ID 충돌이 검출된 명령에 대한 호스트로 추가 특수 정보와 함께 응답을 제출한다. 또한, 추가 특수 정보와 함께 응답을 보내면서, 장치 펌웨어는 명령 응답에 기초한 명령 ID 충돌을 갖는 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제한다.
본 발명의 실시예에 대한 다음의 상세한 설명에서, 본 발명의 일부를 형성하고 본 발명이 실시될 수 있는 특정 실시예를 예시로 도시한 첨부 도면을 참조한다. 이러한 실시예들은 당업자가 본 발명을 실시할 수 있도록 충분히 상세하게 설명되어 있으며, 다른 실시예들이 이용될 수 있으며 본 발명의 범위를 벗어나지 않고 변경이 이루어질 수 있음을 이해해야 한다. 따라서, 이하의 상세한 설명은 제한적인 의미로 해석되어서는 안 되며, 본 발명의 범위는 첨부된 청구 범위에 의해서 정의될 수 있다.
100: 호스트 인터페이스 504: 호스트 서브미션 큐
104: 호스트 508: 호스트 컴플리션 큐
404: SSD 컨트롤러

Claims (8)

  1. SSD(Solid State Drive) 컨트롤러의 명령 인출(fetching) 유닛을 통해, 호스트에 의해 제출된 하나 이상의 명령들을 호스트 서브미션 큐(Host Submission Queue(HSQ))로 인출하고,
    상기 SSD 컨트롤러의 태그 할당(allocation) 유닛을 통해, 상기 호스트 서브미션 큐로부터 상기 하나 이상의 인출된 명령들에 명령 ID 충돌이 있는지 검사하고,
    상기 태그 할당 유닛을 통해, 상기 호스트 서브미션 큐에서 인출된 하나 이상의 명령 중에서 제1 명령에 대한 상기 명령 ID 충돌을 감지하여 명령 ID(Command ID(CID)) 오류 인터럽트를 SSD 장치 펌웨어(FW)에 트리거링(triggering)하고,
    상기 SSD 장치 펌웨어를 통해, 상기 명령 ID 오류 인터럽트들을 수신할 때 상기 하나 이상의 명령들의 명령 검증을 수행하고,
    상기 SSD 장치의 응답 생성 유닛을 통해, 명령 응답을 호스트 서브미션 큐 슬롯 정보를 포함하는 추가 정보와 함께 상기 SSD 장치 펌웨어로부터 상기 제1 명령에 대한 상기 명령 ID가 충돌하는 상기 호스트로 제출하고,
    상기 SSD 장치의 펌웨어를 통해, 상기 명령 응답에 기초하여 상기 하나 이상의 명령들과 관련된 하나 이상의 자원들을, 해제(releasing)하는 것을 포함하되,
    상기 SSD 장치 펌웨어를 통해 상기 명령 검증을 수행하는 것은,
    상기 SSD 장치 펌웨어를 통해, 동일한 호스트 서브미션 큐로부터 동일한 명령 ID를 갖는 명령들 사이의 첫 번째 차이와 상기 인출된 하나 이상의 명령들로부터의 상기 호스트 서브미션 큐 슬롯 정보를 결정하기 위해, 상기 하나 이상의 명령들을 비교하는 것을 포함하는 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌 핸들링 방법.
  2. 제 1항에 있어서,
    상기 제1 명령의 처리를 스킵하는 것을 더 포함하는 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌 핸들링 방법.
  3. 제 1항에 있어서,
    상기 SSD 장치 펌웨어를 통해, 신택스(syntax) 내 상기 명령이 정확하고 상기 명령 ID 충돌이 검출되지 않으면, 상기 하나 이상의 명령들을 처리(processing)하는 것을 더 포함하는 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌 핸들링 방법.
  4. 제 1항에 있어서,
    상기 SSD 장치 펌웨어를 통해, 상기 명령이 처리되면 완료 엔트리(completion entry) 내의 상기 하나 이상의 명령들 각각에 명령 호스트 서브미션 큐 슬롯 정보를 입력하는 것을 더 포함하는 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌 핸들링 방법.
  5. 제 4항에 있어서,
    상기 SSD 장치 펌웨어를 통해, 상기 명령이 처리되면 상기 명령과 관련된 하나 이상의 하드웨어 자원들을 해제하는 것을 더 포함하는 비휘발성 메모리 익스프레스 기반 SSD 장치 내 명령 ID 충돌 핸들링 방법.
  6. 호스트를 통해 장치 메모리 내 호스트 서브미션 큐로 제출된 하나 이상의 명령들을 인출하는 명령 인출 유닛;
    상기 호스트 서브미션 큐로부터 상기 하나 이상의 인출된 명령들 내 명령 ID 충돌이 있는지 검사하고, 상기 명령 ID 충돌이 검출되면 SSD 장치 펌웨어에 명령 ID 오류 인터럽트를 외부에 트리거링하는 태그 할당 유닛;
    상기 태그 할당 유닛에 의해 트리거링되어 상기 명령 ID 오류 인터럽트들을 수신할 때 상기 호스트 서브미션 큐로부터 상기 하나 이상의 인출된 명령들의 명령 검증을 수행하는 SSD 장치 펌웨어; 및
    명령 응답을 호스트 서브미션 큐 슬롯 정보를 포함하는 추가 정보와 함께 상기 SSD 장치 펌웨어로부터 제1 명령에 대한 상기 명령 ID가 충돌하는 상기 호스트로 제출하는 SSD 장치의 응답 생성 유닛을 포함하되,
    상기 SSD 장치 펌웨어를 통해 상기 명령 검증을 수행하는 것은,
    상기 SSD 장치 펌웨어를 통해, 동일한 호스트 서브미션 큐로부터 동일한 명령 ID를 갖는 명령들 사이의 첫 번째 차이와 상기 인출된 하나 이상의 명령들로부터의 상기 호스트 서브미션 큐 슬롯 정보를 결정하기 위해, 상기 하나 이상의 명령들을 비교하는 것을 포함하는 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치.
  7. 제 6항에 있어서,
    상기 SSD 장치 펌웨어는,
    상기 명령 응답에 기초하여 상기 하나 이상의 명령들과 관련된 하나 이상의 자원들을 해제하는 것을 더 포함하는 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치.
  8. 제 6항에 있어서,
    상기 응답 생성 유닛은 상기 제1 명령의 처리를 스킵하는 명령 ID 충돌을 핸들링하는 비휘발성 메모리 익스프레스 기반 SSD 장치.
KR1020180077391A 2018-04-13 2018-07-04 비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법 KR102564163B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201841014241 2018-04-13
IN201841014241 2018-04-13

Publications (2)

Publication Number Publication Date
KR20190120041A KR20190120041A (ko) 2019-10-23
KR102564163B1 true KR102564163B1 (ko) 2023-08-04

Family

ID=68161765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180077391A KR102564163B1 (ko) 2018-04-13 2018-07-04 비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법

Country Status (2)

Country Link
US (1) US10761776B2 (ko)
KR (1) KR102564163B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055022B2 (en) * 2019-03-25 2021-07-06 Western Digital Technologies, Inc. Storage system and method for early host command fetching in a low queue depth environment
US11194742B2 (en) * 2020-04-30 2021-12-07 International Business Machines Corporation Detecting potentially overlapping input/output queues
CN111857579B (zh) * 2020-06-30 2024-02-09 广东浪潮大数据研究有限公司 一种ssd盘片控制器复位方法、系统、装置及可读存储介质
US11899978B2 (en) 2021-12-06 2024-02-13 Samsung Electronics Co., Ltd. Method and system to abort a command for PCIe based non-volatile memory express solid-state drive
US11822793B2 (en) 2022-04-04 2023-11-21 Western Digital Technologies, Inc. Complete and fast protection against CID conflict
US20240061614A1 (en) * 2022-08-18 2024-02-22 Micron Technology, Inc. Error detection and correction in a controller

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490635B1 (en) 2000-04-28 2002-12-03 Western Digital Technologies, Inc. Conflict detection for queued command handling in disk drive controller
KR100618870B1 (ko) * 2004-10-23 2006-08-31 삼성전자주식회사 데이터 트레이닝 방법
KR20100117345A (ko) * 2009-04-24 2010-11-03 삼성전자주식회사 반도체 메모리 장치
US8321639B2 (en) 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US20100325372A1 (en) * 2009-06-17 2010-12-23 Housty Oswin E Parallel training of dynamic random access memory channel controllers
KR101654807B1 (ko) 2010-05-07 2016-09-07 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2012063875A (ja) 2010-09-14 2012-03-29 Toshiba Corp データ記憶装置、コマンド制御装置及び電子機器
US9116625B2 (en) 2012-05-11 2015-08-25 Micron Technology, Inc. Write command overlap detection
US9177623B2 (en) * 2013-03-15 2015-11-03 Qualcomm Incorporated Memory interface offset signaling
US9459810B2 (en) 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US20150253992A1 (en) 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system and control method
US10540219B2 (en) * 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits

Also Published As

Publication number Publication date
US10761776B2 (en) 2020-09-01
US20190317696A1 (en) 2019-10-17
KR20190120041A (ko) 2019-10-23

Similar Documents

Publication Publication Date Title
KR102564163B1 (ko) 비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법
US9727497B2 (en) Resolving contention between data bursts
US8726276B2 (en) Resetting a virtual function that is hosted by an input/output adapter
US11593107B2 (en) Handling an input/output store instruction
US9069485B2 (en) Doorbell backpressure avoidance mechanism on a host channel adapter
KR102387922B1 (ko) 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
CN105359101B (zh) 用于多核处理器的系统管理中断处理
WO2017070861A1 (zh) 一种中断响应方法、装置及基站
CN113366433A (zh) 处理输入/输出存储指令
JP6129976B2 (ja) 高効率アトミック演算を使用した方法および装置
CN106020984B (zh) 电子设备中进程的创建方法及装置
CN113366438A (zh) 处理输入/输出存储指令
CN113778914A (zh) 用于执行数据处理的装置、方法、和计算设备
US8122167B1 (en) Polling in a virtualized information handling system
US8910125B2 (en) Monitoring software performance
US8707449B2 (en) Acquiring access to a token controlled system resource
CN110825427A (zh) 一种代码管理方法、装置、服务器及存储介质
EP2413248B1 (en) Direct memory access device for multi-core system and operating method of the same
KR101133806B1 (ko) 병렬 통신 버스를 통한 인터럽트 메시지 전송 방법 및 컴퓨터 시스템
JP2008503833A (ja) 並列通信バスに連結された装置内で割込みメッセージを待ち行列に入れるためのコンピュータシステム及び方法
US11620083B2 (en) Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device
CN117435252B (zh) 一种互斥锁的硬件实现装置、系统及应用方法
CN117075793A (zh) 数据存储空间处理方法、装置、设备及可读存储介质
CN118151851A (zh) 固态硬盘读取方法、装置、设备及可读存储介质
KR101133879B1 (ko) 컴퓨터 시스템, 인터럽트 메시지 큐잉 방법 및 제조물

Legal Events

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