KR20190010335A - 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템 - Google Patents

레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20190010335A
KR20190010335A KR1020170092989A KR20170092989A KR20190010335A KR 20190010335 A KR20190010335 A KR 20190010335A KR 1020170092989 A KR1020170092989 A KR 1020170092989A KR 20170092989 A KR20170092989 A KR 20170092989A KR 20190010335 A KR20190010335 A KR 20190010335A
Authority
KR
South Korea
Prior art keywords
storage device
processor
command
polling
latency information
Prior art date
Application number
KR1020170092989A
Other languages
English (en)
Inventor
이상걸
이원주
장은우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170092989A priority Critical patent/KR20190010335A/ko
Priority to US15/861,326 priority patent/US20190026220A1/en
Priority to CN201810237644.0A priority patent/CN109284241A/zh
Publication of KR20190010335A publication Critical patent/KR20190010335A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • 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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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/0028Serial attached SCSI [SAS]

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)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

컴퓨팅 시스템은 프로세서 및 저장 장치를 포함한다. 저장 장치는 복수의 비휘발성 메모리 장치들을 포함하고, 복수의 비휘발성 메모리 장치들에 유저 데이터를 저장하며, 레이턴시 정보를 더욱 저장한다. 프로세서는 저장 장치로부터 레이턴시 정보를 수신하고, 레이턴시 정보에 기초하여 폴링 지연 시간을 결정하며, 저장 장치에 저장 장치 커맨드를 전송하고, 저장 장치 커맨드의 전송 시점으로부터 폴링 지연 시간이 지난 후 저장 장치의 상태를 체크하는 폴링 동작을 개시한다. 이에 따라, 프로세서가 각 저장 장치에 적합한 폴링 지연 시간 동안 대기할 수 있고, 프로세서 사용량이 감소될 수 있다.

Description

레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템{STORAGE DEVICE STORING LATENCY INFORMATION, PROCESSOR AND COMPUTING SYSTEM}
본 발명은 컴퓨팅 시스템에 관한 것으로서, 더욱 상세하게는 레이턴시 정보를 저장하는 저장 장치, 상기 저장 장치에 저장된 레이턴시 정보를 이용하는 프로세서, 및 상기 저장 장치 및 상기 프로세서를 포함하는 컴퓨팅 시스템에 관한 것이다.
프로세서가 저장 장치에 대한 입출력 동작을 수행할 때, 상기 프로세서는 상기 입출력 동작에 상응하는 커맨드(예를 들어, 라이트 커맨드 또는 리드 커맨드)를 상기 저장 장치에 전송하고, 상기 저장 장치가 상기 커맨드에 따른 처리를 완료하였는지를 확인한 후 후속 동작을 수행한다. 한편, 상기 프로세서는 인터럽트 요청(Interrupt Request; IRQ) 방식 또는 폴링(Polling) 방식으로 상기 저장 장치의 커맨드 처리 완료를 확인할 수 있다. IRQ 방식은 상기 프로세서가 상기 커맨드에 따른 처리를 완료한 저장 장치로부터 인터럽트를 수신함으로써 상기 커맨드 처리 완료를 확인하는 방식이다. 폴링 방식은 상기 프로세서가 상기 커맨드를 상기 저장 장치에 전송한 후 상기 저장 장치의 상태를 계속하여 체크함으로써 상기 커맨드 처리 완료를 확인하는 방식이다. 이러한 폴링 방식은 상기 IRQ 방식과 비교하여 인터럽트 전송 지연 등을 제거하여 보다 신속한 처리가 가능하고, 콘텍스트 스위치(Context Switch) 오버헤드 등을 제거할 수 있는 장점이 있다. 그러나, 상기 폴링 방식은 상기 프로세서가 폴링 동작을 계속하여 수행함에 따라 프로세서 부하 또는 프로세서 사용량이 증가되는 문제가 있다.
본 발명의 일 목적은 저장 장치에 저장된 레이턴시 정보를 활용하여 폴링 동작 시 프로세서 사용량을 감소시킬 수 있는 컴퓨팅 시스템을 제공하는 것이다.
본 발명의 다른 목적은 저장 장치에 저장된 레이턴시 정보를 활용하여 폴링 동작 시 프로세서 사용량을 감소시킬 수 있는 프로세서를 제공하는 것이다.
본 발명의 또 다른 목적은 폴링 동작 시 프로세서 사용량을 감소시킬 수 있도록 레이턴시 정보를 저장하는 저장 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 컴퓨팅 시스템은 저장 장치 및 프로세서를 포함한다. 상기 저장 장치는 복수의 비휘발성 메모리 장치들을 포함하고, 상기 복수의 비휘발성 메모리 장치들에 유저 데이터와 레이턴시 정보를 저장한다. 상기 프로세서는 상기 저장 장치로부터 상기 레이턴시 정보를 수신하고, 상기 레이턴시 정보에 기초하여 폴링 지연 시간을 결정하며, 상기 저장 장치에 저장 장치 커맨드를 전송하고, 상기 저장 장치 커맨드의 전송 시점으로부터 상기 폴링 지연 시간이 지난 후 상기 저장 장치의 상태를 체크하는 폴링 동작을 개시한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저장 장치에 연결되는 프로세서는 상기 저장 장치로부터 상기 저장 장치에 저장된 레이턴시 정보를 수신하고, 상기 레이턴시 정보에 기초하여 폴링 지연 시간을 결정하며, 상기 저장 장치에 저장 장치 커맨드를 전송하고, 상기 저장 장치 커맨드의 전송 시점으로부터 상기 폴링 지연 시간이 지난 후 상기 저장 장치의 상태를 체크하는 폴링 동작을 개시한다.
상기 또 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 복수의 비휘발성 메모리 장치들을 포함하는 저장 장치는 상기 복수의 비휘발성 메모리 장치들에 유저 데이터를 저장하고, 저장 장치 커맨드의 폴링 지연 시간을 결정하기 위한 레이턴시 정보를 더욱 저장한다.
상기와 같은 본 발명의 실시예들에 따른 저장 장치, 프로세서, 및 컴퓨팅 시스템에서, 상기 저장 장치가 레이턴시 정보를 저장하고, 상기 프로세서가 상기 저장 장치에 저장된 레이턴시 정보에 기초하여 폴링 지연 시간을 결정하여 저장 장치 커맨드의 전송 시점으로부터 상기 폴링 지연 시간이 지난 후 폴링 동작을 개시함으로써, 각 저장 장치에 적합한 폴링 지연 시간을 결정할 수 있고, 폴링 동작 시 프로세서 사용량을 감소시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 저장 장치의 일 예를 나타내는 블록도이다.
도 3은 도 2의 저장 장치에 포함된 비휘발성 메모리 장치의 일 예를 나타내는 블록도이다.
도 4는 도 3의 비휘발성 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타내는 회로도이다.
도 5는 필수 제품 데이터(Vital Product Data; VPD) 페이지의 일 예를 설명하기 위한 도면이다.
도 6은 인터럽트 요청(Interrupt Request; IRQ) 방식의 입출력 동작 시간, 폴링 방식의 입출력 동작 시간, 프로세서(또는 유저) 기반 하이브리드 폴링 방식의 제1 입출력 동작 시간, 프로세서(또는 유저) 기반 하이브리드 폴링 방식의 제2 입출력 동작 시간, 및 본 발명의 실시예들에 따른 장치 기반 하이브리드 폴링 방식의 입출력 동작 시간을 나타내는 타이밍도이다.
도 7은 본 발명의 다른 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이고, 도 2는 본 발명의 실시예들에 따른 저장 장치의 일 예를 나타내는 블록도이며, 도 3은 도 2의 저장 장치에 포함된 비휘발성 메모리 장치의 일 예를 나타내는 블록도이고, 도 4는 도 3의 비휘발성 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타내는 회로도이고, 도 5는 필수 제품 데이터(Vital Product Data; VPD) 페이지의 일 예를 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 특정 계산들 또는 태스크들을 실행하는 프로세서(110), 및 데이터(예를 들어, 유저 데이터)를 파일 형태로 저장하는 저장 장치(140)를 포함한다. 컴퓨팅 시스템(100)은 컴퓨팅 시스템(100)의 구동에 필요한 데이터를 저장하는 메인 메모리로서 동작하는 메모리 장치(190)를 더 포함할 수 있다. 실시예에 따라, 컴퓨팅 시스템(100)은 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트 폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등의 임의의 전자 기기일 수 있다.
프로세서(110)는 컴퓨팅 시스템(100)의 전체적인 동작을 제어할 수 있다. 실시예에 따라, 프로세서(110)는 중앙 처리 장치(Central Processing Unit; CPU), 마이크로프로세서 등일 수 있다. 프로세서(110)는 컴퓨팅 시스템(100)의 구동을 위한 운영 체제(Operating System; OS)(130)을 실행할 수 있다. 운영 체제(130)는 사용자 어플리케이션(120)으로부터의 입출력 요청을 처리하고 메모리 장치(190) 및 주변 장치들을 제어하는 커널(Kernel)을 포함할 수 있다. 일 실시예에서, 운영 체제(130)는 입출력 처리가 요청되는 데이터 블록을 관리하는 블록 레이어, 저장 장치(140)를 포함한 상기 주변 장치들을 제어하기 위한 장치 드라이버들 등을 더 포함할 수 있다. 또한, 프로세서(110)는 다양한 서비스를 제공하기 위한 다양한 사용자 어플리케이션(120)을 실행할 수 있다. 예를 들어, 프로세서(110)는 사용자 어플리케이션(120)으로서 동영상 어플리케이션, 게임 어플리케이션, 웹 브라우저 어플리케이션 등을 실행할 수 있다.
메모리 장치(190)는 프로세서(110)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(190)는 SRAM(static random access memory), DRAM(dynamic random access memory) 등과 같은 휘발성 메모리로 구현될 수 있으나, 이에 한정되지 않는다.
저장 장치(140)는, 도 1에 도시된 바와 같이, 프로세서(110)에 직접 연결될 수 있다. 이 경우, 저장 장치(140)는 프로세서(110)와 PCIe(Peripheral Component Interconnect express) 인터페이스 프로토콜로 통신할 수 있으나, 이에 한정되지 않는다. 한편, 저장 장치(140)는 보조 기억 장치일 수 있다. 예를 들어, 저장 장치(140)는 솔리드 스테이트 드라이브(Solid State Drive; SSD), NVMe(Non-Volatile Memory Express) SSD, Z-SSD, 옵테인(Optane) SSD, MLC(Multi-Level Cell) 기반 SSD, TLC(Triple Level Cell) 기반 SSD, 하드 디스크 드라이브(Hard Disk Drive; HDD) 등일 수 있다.
일 실시예에서, 저장 장치(140)는 NAND 플래시 메모리와 같은 복수의 비휘발성 메모리 장치들을 포함하는 SSD일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 저장 장치(140)는 데이터(예를 들어, 유저 데이터)를 저장하는 복수의 비휘발성 메모리 장치들(150), 복수의 비휘발성 메모리 장치들(150)을 제어하는 스토리지 컨트롤러(141), 및 프로세서(110)와 복수의 비휘발성 메모리 장치들(150) 사이에서 전송되는 데이터(예를 들어, 유저 데이터)를 일시적으로 저장하는 버퍼 메모리(143)를 포함할 수 있다. 한편, 도 2에는 버퍼 메모리(143)가 스토리지 컨트롤러(141) 외부에 위치한 예가 도시되어 있으나, 실시예에 따라 버퍼 메모리(143)는 스토리지 컨트롤러(141) 내부에 위치할 수 있다.
또한, 일 실시예에서, 복수의 비휘발성 메모리 장치들(150) 각각(200)은, 도 3에 도시된 바와 같이, 메모리 셀 어레이(210), 어드레스 디코더(220), 페이지 버퍼 회로(230), 데이터 입출력 회로(240), 전압 생성기(250) 및 제어 회로(260)를 포함할 수 있다.
메모리 셀 어레이(210)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 어드레스 디코더(220)와 연결될 수 있다. 또한, 메모리 셀 어레이(210)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다. 메모리 셀 어레이(210)는 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 비휘발성 메모리 셀들을 포함할 수 있다.
일 실시예에서, 메모리 셀 어레이(210)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(210)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 셀 스트링들을 포함할 수 있다. 삼차원 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다. 예를 들어, 도 4에 도시된 바와 같이, 메모리 셀 어레이(210)는 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 셀 어레이일 수 있다. 예를 들어, 메모리 셀 어레이(210)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 4를 참조하면, 메모리 셀 어레이(210)는 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 셀 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 셀 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 4에는 복수의 메모리 셀 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다. 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 4에는 메모리 셀 어레이(210)가 여덟 개의 워드 라인들(WL1, WL2, ..., WL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
다른 실시예서, 메모리 셀 어레이(210)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다.
다시 도 3을 참조하면, 제어 회로(260)는 스토리지 컨트롤러(141)로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(150, 200)의 프로그램 동작, 독출 동작 및 소거 동작을 제어할 수 있다. 예를 들어, 제어 회로(260)는 커맨드 신호(CMD)에 기초하여 전압 생성기(250)를 제어하기 위한 제어 신호들(CONs)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(260)는 로우 어드레스(R_ADDR)를 어드레스 디코더(220)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(240)에 제공할 수 있다.
어드레스 디코더(220)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(410)와 연결될 수 있다. 기입 동작(또는 프로그램 동작) 또는 독출 동작 시, 어드레스 디코더(220)는 제어 회로(260)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WLs) 중의 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WLs) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
전압 생성기(250)는 제어 회로(260)로부터 제공되는 제어 신호들(CONs)에 기초하여 비휘발성 메모리 장치(200)의 동작에 필요한 워드 라인 전압들(VWLs)을 생성할 수 있다. 전압 생성기(250)로부터 생성되는 워드 라인 전압들(VWLs)은 어드레스 디코더(220)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다. 기입 동작(또는 프로그램 동작) 시, 전압 생성기(250)는 프로그램 전압 및 프로그램 패스 전압을 생성할 수 있다. 상기 프로그램 전압은 어드레스 디코더(220)를 통해 상기 선택 워드 라인에 인가되고, 상기 프로그램 패스 전압은 어드레스 디코더(220)를 통해 상기 비선택 워드 라인들에 인가될 수 있다. 또한, 독출 동작 시, 전압 생성기(250)는 독출 전압 및 독출 패스 전압을 생성할 수 있다. 상기 독출 전압은 어드레스 디코더(220)를 통해 상기 선택 워드 라인에 인가되고, 상기 독출 패스 전압은 어드레스 디코더(220)를 통해 상기 비선택 워드 라인들에 인가될 수 있다.
페이지 버퍼 회로(230)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(210)와 연결될 수 있다. 페이지 버퍼 회로(230)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다. 페이지 버퍼 회로(230)는 기입 동작(또는 프로그램 동작) 시 선택된 페이지에 프로그램될 데이터를 임시로 저장하고, 독출 동작 시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(240)는 데이터 라인(DL)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다. 기입 동작(또는 프로그램 동작) 시, 데이터 입출력 회로(240)는 스토리지 컨트롤러(141)로부터 프로그램 데이터(DATA)를 수신하고, 제어 회로(260)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 프로그램 데이터(DATA)를 페이지 버퍼 회로(230)에 제공할 수 있다. 독출 동작 시, 데이터 입출력 회로(240)는 제어 회로(260)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(230)에 저장된 독출 데이터(DATA)를 스토리지 컨트롤러(141)에 제공할 수 있다.
다시 도 2를 참조하면, 스토리지 컨트롤러(141)는 프로세서(110)로부터 수신된 저장 장치 커맨드 및 유저 데이터에 기초하여 비휘발성 메모리 장치들(150)의 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(141)는 프로세서(110)로부터 상기 저장 장치 커맨드로서 라이트 커맨드를 수신할 수 있고, 상기 라이트 커맨드에 응답하여 기입 동작을 수행하도록 비휘발성 메모리 장치들(150)을 제어할 수 있다. 또한, 스토리지 컨트롤러(141)는 프로세서(110)로부터 상기 저장 장치 커맨드로서 리드 커맨드를 수신할 수 있고, 상기 리드 커맨드에 응답하여 독출 동작을 수행하도록 비휘발성 메모리 장치들(150)을 제어할 수 있다. 일 실시예에서, 스토리지 컨트롤러(141)는 스토리지 컨트롤러(141)의 동작을 제어하는 CPU, 상기 CPU에 의해 실행 및 처리되는 명령어 및 데이터를 저장하는 내부 메모리, 프로세서(110)와 인터페이싱을 위한 호스트 인터페이스, 비휘발성 메모리 장치들(150)과 인터페이싱을 위한 메모리 인터페이스, 및 버퍼 메모리(143)의 기입 및 독출 동작들의 제어를 위한 버퍼 메모리를 포함할 수 있으나, 이에 한정되지 않는다. 또한, 실시예에 따라, 스토리지 컨트롤러(141)는 에러 정정을 위한 ECC(error correction code) 블록, 데이터 랜덤화를 위한 랜덤화 블록 등을 더 포함할 수 있다.
다시 도 1을 참조하면, 저장 장치(140)는 각 저장 장치의 모델, 용량 등에 따라 결정되는 레이턴시(예를 들어, 기입 및/또는 독출 레이턴시)에 대한 레이턴시 정보(165)를 저장할 수 있다. 일 실시예에서, 레이턴시 정보(165)는, 저장 장치(140)가 제조될 때, 저장 장치(140)의 제조자 또는 벤더에 의해 저장 장치(140)에 기입될 수 있다.
일 실시예에서, 도 2에 도시된 바와 같이, 레이턴시 정보(165)는 복수의 비휘발성 메모리 장치들(150) 중 적어도 하나의 비휘발성 메모리 장치(155)의 메모리 셀 어레이에 저장될 수 있다. 또한, 일 실시예에서, 도 2에 도시된 바와 같이, 레이턴시 정보(165)는 비휘발성 메모리 장치(155)에 포함된 필수 제품 데이터(Vital Product Data; VPD) 페이지(160)에 저장될 수 있다.
VPD 페이지(160)는 논리 유닛(logical unit) 및 목표 장치(target device)에 대한 벤더 특정 제품 정보(vendor specific product information)를 저장할 수 있다. 예를 들어, 도 5에 도시된 바와 같이, VPD 페이지(160)는 논리 유닛에 연결되는 주변 장치에 대한 주변 퀄리파이어(PERIPHERAL QUALIFIER) 및 주변 장치 타입(PERIPHERAL DEVICE TYPE) 필드들, VPD 페이지(160)가 어떤 종류의 VPD 페이지(예를 들어, ASCII 정보 VPD 페이지, 데이터 코드 페이지, 장치 동작(Behavior) 페이지 등)인지를 나타내는 페이지 코드(PAGE CODE) 필드, VPD 페이지 데이터의 길이를 나타내는 페이지 길이(PAGE LENGTH) 필드, 라이트 동일(WRITE SAME) 커맨드의 논리 블록의 개수(NUMBER OF LOGICAL BLOCKS) 필드의 0의 값 지원 여부를 나타내는 WSNZ(Write Same Non-Zero) 비트, 비교 및 라이트(COMPARE AND WRITE) 커맨드의 논리 블록의 개수 필드의 최대 값을 나타내는 최대 비교 및 라이트 길이(MAXIMUM COMPARE AND WRITE LENGTH) 필드, 단일 커맨드에 대한 논리 블록들의 최적 전송 길이 입도(granularity) 사이즈를 나타내는 최적 전송 길이 입도(OPTIMAL TRANSFER LENGTH GRANULARITY) 필드, 단일 커맨드에 대한 논리 블록들의 최대 전송 길이를 나타내는 최대 전송 길이(MAXIMUM TRANSFER LENGTH) 필드, 단일 커맨드에 대한 논리 블록들의 최적 전송 길이를 나타내는 최적 전송 길이(OPTIMAL TRANSFER LENGTH) 필드, 단일 프리-페치(PRE-FETCH) 커맨드에 대한 논리 블록들의 최대 프리페치 길이를 나타내는 최대 프리페치 길이(MAXIMUM PREFETCH LENGTH) 필드, 언맵(UNMAP) 커맨드에 의해 언맵될 수 있는 LBA(Logical Block Addressing)들의 최대 개수를 나타내는 최대 언맵 LBA 카운트(MAXIMUM UNMAP LBA COUNT) 필드, 언맵 블록 디스크립터의 최대 개수를 나타내는 최대 언맵 블록 디스크립터 카운트(MAXIMUM UNMAP BLOCK DESCRIPTOR COUNT) 필드, 언맵 요청에 대한 로직 블록들의 최적 입도를 나타내는 최적 언맵 입도(MAXIMUM UNMAP BLOCK DESCRIPTOR COUNT) 필드, 언맵 입도 정렬 필드의 유효 여부를 나타내는 언맵 입도 정렬 유효(UGAVAILD) 비트, 최적 언맵 입도 필드가 적용되는 첫 번째 로직 블록의 LBA를 나타내는 언맵 입도 정렬(UNMAP GRANULARITY ALIGNMENT) 필드, 라이트 동일 커맨드에 대한 로직 블록들의 개수 필드의 최대 값을 나타내는 최대 라이트 동일 길이(MAXIMUM WRITE SAME LENGTH) 필드, 및 현재 미사용 중인 리저브(Reserved) 필드를 포함할 수 있다. 일 실시예에서, 레이턴시 정보(165)는 VPD 페이지(160)의 미사용 중인 리저브 필드, 예를 들어 Byte[44] 내지 Byte [63]의 리저브 필드(170)에 저장될 수 있다.
프로세서(110)(또는, 프로세서(110)에서 실행되는 운영 체제(130))는 저장 장치(140)로부터 레이턴시 정보(LINFO)를 수신할 수 있다. 일 실시예에서, 프로세서(110)(또는 운영 체제(130))는 벤더 특유 커맨드(Vendor Unique Command; VUC)를 전송하여 저장 장치(140)로부터 레이턴시 정보(LINFO)를 수신할 수 있다. 다른 실시예에서, 프로세서(110)는 저장 장치(140)에 대한 표준에 정의된 커맨드(예를 들어, 질의(INQUIRY) 커맨드) 또는 상기 표준에 새로 추가된 커맨드를 전송하여 저장 장치(140)로부터 레이턴시 정보(LINFO)를 수신할 수 있다.
프로세서(110)는 저장 장치(140)로부터 수신된 레이턴시 정보(LINFO)에 기초하여 저장 장치 커맨드의 전송한 시점으로부터 폴링 동작을 개시하는 시점까지의 시간인 폴링 지연 시간을 결정할 수 있다. 일 실시예에서, 상기 저장 장치 커맨드는 저장 장치(140)에 유저 데이터를 기입하는 라이트 커맨드, 및 저장 장치(140)로부터 유저 데이터를 독출하는 리드 커맨드를 포함할 수 있고, 레이턴시 정보(LINFO)는 상기 라이트 커맨드를 전송한 후 프로세서(110)의 대기 시간인 라이트 커맨드 폴링 지연 시간, 및 상기 리드 커맨드를 전송한 후 프로세서(110)의 대기 시간인 리드 커맨드 폴링 지연 시간을 포함할 수 있다. 한편, 저장 장치(140)는, 프로세서(110)로부터 상기 라이트 커맨드를 수신하는 경우, 상기 라이트 커맨드를 받아들이는(accept) 시간, 프로세서(110)로부터의 유저 데이터를 버퍼 메모리(143)에 저장하는 시간, 버퍼 메모리(143)의 유저 데이터를 비휘발성 메모리 장치들(150)에 기입하는 시간, 및 기입 동작의 결과를 알리는 시간을 포함하는 라이트 레이턴시를 가질 수 있고, 상기 라이트 커맨드 폴링 지연 시간은 저장 장치(140)의 상기 라이트 레이턴시에 상응할 수 있다. 또한, 저장 장치(140)는, 프로세서(110)로부터 상기 리드 커맨드를 수신하는 경우, 상기 리드 커맨드를 받아들이는(accept) 시간, 비휘발성 메모리 장치들(150)로부터 유저 데이터를 독출하여 버퍼 메모리(143)에 저장하는 시간, 버퍼 메모리(143)에 저장된 유저 데이터를 프로세서(110)로 출력하는 시간, 및 독출 동작의 결과를 알리는 시간을 포함하는 리드 레이턴시를 가질 수 있고, 상기 리드 커맨드 폴링 지연 시간은 저장 장치(140)의 상기 리드 레이턴시에 상응할 수 있다.
또한, 이 경우, 프로세서(110)는 상기 라이트 커맨드에 대한 상기 폴링 지연 시간을 레이턴시 정보(LINFO)에 포함된 상기 라이트 커맨드 폴링 지연 시간으로 결정하고, 상기 리드 커맨드에 대한 상기 폴링 지연 시간을 레이턴시 정보(LINFO)에 포함된 상기 리드 커맨드 폴링 지연 시간으로 결정할 수 있다. 따라서, 프로세서(110)는 저장 장치(140)에 상기 저장 장치 커맨드(예를 들어, 상기 라이트 커맨드 또는 상기 리드 커맨드)를 전송한 후 레이턴시 정보(LINFO)에 기초하여 결정된 상기 폴링 지연 시간(예를 들어, 상기 라이트 커맨드 폴링 지연 시간 또는 상기 리드 커맨드 폴링 지연 시간) 동안 대기 상태에 있을 수 있고, 상기 저장 장치 커맨드의 전송 시점으로부터 상기 폴링 지연 시간이 지난 후 저장 장치(140)의 상태를 체크하는 폴링 동작을 개시할 수 있다.
예를 들어, 사용자 어플리케이션(120)이 라이트 함수 또는 리드 함수와 같은 시스템 함수를 호출(SYS_CALL)한 경우, 운영 체제(130)는 저장 장치(140)에 상기 라이트 커맨드 또는 상기 리드 커맨드와 같은 상기 저장 장치 커맨드를 전송할 수 있다. 저장 장치(140)는 같은 상기 저장 장치 커맨드에 상응하는 처리를 실행(180)할 수 있다. 이 때, 프로세서(110)는 레이턴시 정보(LINFO)에 기초하여 결정된 상기 폴링 지연 시간 동안 대기 상태에 있을 수 있다. 상기 폴링 지연 시간 후, 프로세서(110)의 운영 체제(130)는 저장 장치(140)의 상태를 체크하는 폴링 동작을 개시할 수 있다. 저장 장치(140)의 커맨드 처리가 완료되면, 운영 체제(130)는 상기 폴링 동작에 의해 커맨드 처리 완료를 알 수 있다.
한편, 프로세서(110)가 저장 장치(140)로부터 커맨드 처리 완료를 나타내는 인터럽트를 수신하는 인터럽트 요청(Interrupt Request; IRQ) 방식에서는, 저장 장치(140)로부터의 인터럽트를 처리하는 인터럽트 핸들러에 의한 인터럽트 전송 지연, 콘텍스트 스위치(Context Switch) 오버헤드 등이 발생하여 신속한 처리가 불가하다. 또한, 프로세서(110)가 저장 장치(140)에 상기 저장 장치 커맨드를 전송한 직후부터 폴링 동작을 계속하여 수행하는 폴링 방식은 프로세서 부하 또는 프로세서 사용량(예를 들어, CPU 사용량)이 증가되는 문제가 있다. 이러한 프로세서 부하 또는 프로세서 사용량을 감소시키도록, 프로세서(110)가 저장 장치(140)에 대한 커맨드 큐(Queue) 등에 기초하여 저장 장치(140)의 라이트/리드 레이턴시를 예측하고, 예측된 레이턴시에 상응하는 폴링 지연 시간 동안 대기한 후 상기 폴링 동작을 수행하거나, 사용자 또는 사용자 어플리케이션(120)으로부터 폴링 지연 시간을 입력 받고, 상기 사용자에 의해 입력된 폴링 지연 시간 후 폴링 동작을 수행하는 방식을 고려할 수 있다. 그러나, 이와 같이 프로세서(110)에 의한 예측 또는 사용자로부터의 입력에 기초하여 폴링 지연 시간을 결정하는 방식은, 각 저장 장치(140)의 특성, 예를 들어 각 저장 장치(140)의 모델, 용량 등에 따른 특성을 적절히 반영하지 못할 수 있다.
그러나, 본 발명의 실시예들에 따른 저장 장치(140)를 포함하는 컴퓨팅 시스템(100)에서는, 저장 장치(140)에 레이턴시 정보(165)가 저장되고, 프로세서(110)가 상기 저장 장치 커맨드를 전송한 후 저장 장치(140)로부터 수신된 레이턴시 정보(165)에 기초하여 결정된 상기 폴링 지연 시간 동안 대기 상태에 있으며, 상기 폴링 지연 시간이 지난 후 폴링 동작을 개시한다. 이와 같이, 상기 저장 장치 커맨드의 전송한 시점으로부터 상기 폴링 동작을 개시하는 시점까지의 시간인 상기 폴링 지연 시간이, 각 저장 장치(140)의 모델, 용량 등에 따라 각 저장 장치(140)의 라이트/리드 레이턴시에 상응하도록 결정된 레이턴시 정보(165)에 기초하여 결정됨으로써, 프로세서(110)가 각 저장 장치(140)에 적합한 상기 폴링 지연 시간 동안 대기 상태에 있을 수 있다. 또한, 프로세서(110)가 상기 폴링 지연 시간 동안 대기 상태에 있음으로써, 계속된 폴링 동작에 따른 프로세서 부하 또는 프로세서 사용량이 감소될 수 있다.
도 6은 인터럽트 요청(Interrupt Request; IRQ) 방식의 입출력 동작 시간, 폴링 방식의 입출력 동작 시간, 프로세서(또는 유저) 기반 하이브리드 폴링 방식의 제1 입출력 동작 시간, 프로세서(또는 유저) 기반 하이브리드 폴링 방식의 제2 입출력 동작 시간, 및 본 발명의 실시예들에 따른 장치 기반 하이브리드 폴링 방식의 입출력 동작 시간을 나타내는 타이밍도이다.
도 6에서, 300은 IRQ 방식의 입출력 동작 시간을 나타내고, 320은 폴링 방식의 입출력 동작 시간을 나타내며, 340은 프로세서(또는 유저) 기반 하이브리드 폴링 방식의 제1 입출력 동작 시간을 나타내고, 360은 프로세서(또는 유저) 기반 하이브리드 폴링 방식의 제2 입출력 동작 시간을 나타내며, 380은 본 발명의 실시예들에 따른 장치 기반 하이브리드 폴링 방식의 입출력 동작 시간을 나타낸다.
도 1 및 도 6을 참조하면, 참조번호 300으로 도시된 바와 같이, 사용자 어플리케이션(120)이 입력 동작(또는 저장 장치(140)에 대한 라이트 동작) 또는 출력 동작(또는 저장 장치(140)에 대한 리드 동작)을 요청할 때, 사용자 어플리케이션(120)은 시스템 함수 호출(301)을 수행하고, 운영 체제(130)는 블록 입출력(Block Input/Output; BIO) 스택 처리(302)를 수행하며, 이어서 저장 장치(140)에 대한 장치 드라이버는 저장 장치(140)에 저장 장치 커맨드를 전송하는 장치 드라이버 처리(303)를 수행한다. 저장 장치(140)는 상기 장치 드라이버로부터의 상기 저장 장치 커맨드에 상응하는 처리를 실행, 즉 커맨드 처리의 실행(310)을 수행할 수 있다. 한편, 이러한 시스템 함수 호출(301), BIO 스택 처리(302), 장치 드라이버 처리(303) 및 커맨드 처리 실행(310)은, 상기 IRQ 방식뿐만 아니라, 폴링 방식, 프로세서(또는 유저) 기반 하이브리드 폴링 방식, 및 장치 기반 하이브리드 폴링 방식에서도 수행되고, 실질적으로 동일한 시간이 소요될 수 있다. 상기 IRQ 방식에서, 프로세서(110)는 저장 장치(140)로부터 인터럽트를 수신할 때까지 대기 상태(또는 슬립 상태)(305)에 있을 수 있다. 한편, 프로세서(110)가 대기 상태(305)로 진입 및 종료할 때 콘텍스트 스위칭(Context Switching: CS)(304, 306)이 수행될 수 있다. 예를 들어, 저장 장치(140)가 커맨드 처리를 완료하면, 저장 장치(140)는 인터럽트를 발생시킬 수 있다. 인터럽트 핸들러는 저장 장치(140)로부터의 상기 인터럽트를 운영 체제(130)에 전달하는 인터럽트 서비스 루틴(Interrupt Service Routine; ISR) (315)을 실행할 수 있다. 한편, ISR이 실행될 때 콘텍스트 스위칭(314)이 수행될 수 있다. 운영 체제(130)가 상기 인터럽트 핸들러로부터 상기 인터럽트를 수신하면, 대기 상태(305)를 종료하고, 콘텍스트 스위칭(306) 후 BIO 스택 처리(307) 및 시스템 함수 호출(301)에 대한 결과의 반환(308)을 수행할 수 있다. 한편, BIO 스택 처리(307) 및 결과 반환(308)은 상기 IRQ 방식뿐만 아니라, 폴링 방식, 프로세서(또는 유저) 기반 하이브리드 폴링 방식, 및 장치 기반 하이브리드 폴링 방식에서도 수행되고, 실질적으로 동일한 시간이 소요될 수 있다. 이와 같은 IRQ 방식에서는, 콘텍스트 스위칭(314, 306) 및 ISR(315) 등의 시간이 추가적으로 소요되므로, 입출력 동작이 신속하게 처리되지 못하는 문제가 있다.
참조번호 320으로 도시된 바와 같이, 폴링 방식에서는, 프로세서(110)(예를 들어, 프로세서(110)의 운영 체제(130)에 포함된 상기 장치 드라이버)가 상기 저장 장치 커맨드를 전송한 후 저장 장치(140)의 상태, 즉 저장 장치(140)의 커맨드 처리 실행(310)의 완료 여부를 체크하는 폴링 동작(325)을 수행할 수 있다. 이러한 폴링 방식은, 상기 IRQ 방식과 비교하여, 콘텍스트 스위칭(314, 306) 및 ISR(315) 등의 시간을 제거할 수 있으므로 입출력 동작이 신속하게 처리할 수 있으나, 프로세서 부하 또는 프로세서 사용량이 증가되는 단점이 있다.
상기 폴링 방식의 단점을 해결하도록, 프로세서(110)가 (예를 들어, 커맨드 큐(Queue)에 포함된 커맨드들의 개수에 따라) 저장 장치(140)의 라이트/리드 레이턴시를 예측하고, 예측된 레이턴시에 상응하는 폴링 지연 시간 동안 대기한 후 상기 폴링 동작을 수행하는 프로세서 기반 하이브리드 폴링 방식을 고려할 수 있다. 또한, 상기 폴링 방식의 단점을 해결하도록, 사용자 또는 사용자 어플리케이션(120)으로부터 폴링 지연 시간을 입력 받고, 상기 사용자에 의해 입력된 폴링 지연 시간 후 폴링 동작을 수행하는 사용자 기반 하이브리드 폴링 방식을 고려할 수 있다. 그러나, 이러한 프로세서(또는 사용자) 기반 하이브리드 폴링 방식은, 각 저장 장치(140)의 특성, 예를 들어 각 저장 장치(140)의 모델, 용량 등에 따른 특성을 적절히 반영하지 못할 수 있고, 이에 따라 프로세서(110) 또는 상기 사용자에 의해 결정된 상기 폴링 지연 시간이 저장 장치(140)의 실제 라이트/리드 레이턴시와 상이할 수 있다.
예를 들어, 참조번호 340으로 도시된 바와 같이, 상기 프로세서(또는 사용자) 기반 하이브리드 폴링 방식에서, 프로세서(110)는 상기 저장 장치 커맨드를 전송한 후 제1 예측 시간(TPREDICT1) 동안 대기 상태(또는 슬립 상태)(345)에 있을 수 있다. 한편, 프로세서(110)가 대기 상태(345)로 진입 및 종료할 때 콘텍스트 스위칭(Context Switching: CS)(344, 346)이 수행될 수 있다. 그러나, 이러한 제1 예측 시간(TPREDICT1)이 저장 장치(140)의 상기 라이트/리드 레이턴시, 또는 커맨드 처리 실행(310) 시간보다 길 수 있다. 제1 예측 시간(TPREDICT1)이 커맨드 처리 실행(310) 시간보다 긴 경우, 프로세서(110)(또는 상기 디바이스 드라이버)는 저장 장치(140)의 커맨드 처리 실행(310)이 완료된 후 폴링 동작(350)을 수행할 수 있고, 이에 따라 입출력 동작 시간이 원치 않게 길어질 수 있다.
다른 예에서, 참조번호 360으로 도시된 바와 같이, 상기 프로세서(또는 사용자) 기반 하이브리드 폴링 방식에서, 프로세서(110)는 상기 저장 장치 커맨드를 전송한 후 제2 예측 시간(TPREDICT2) 동안 대기 상태(또는 슬립 상태)(365)에 있을 수 있다. 한편, 프로세서(110)가 대기 상태(365)로 진입 및 종료할 때 콘텍스트 스위칭(Context Switching: CS)(364, 366)이 수행될 수 있다. 그러나, 이러한 제2 예측 시간(TPREDICT2)이 저장 장치(140)의 상기 라이트/리드 레이턴시, 또는 커맨드 처리 실행(310) 시간보다 과도하게 짧을 수 있다. 제1 예측 시간(TPREDICT1)이 커맨드 처리 실행(310) 시간보다 과도하게 짧은 경우, 프로세서(110)(또는 상기 디바이스 드라이버)의 폴링 동작(370) 시간이 과도하게 길 수 있고, 이에 따라 상기 프로세서 부하 또는 상기 프로세서 사용량이 원하는 정도로 감소되지 않을 수 있다.
그러나, 본 발명의 실시예들에 따른 장치 기반 하이브리드 폴링 방식에서는, 프로세서(110)가 각 저장 장치(140)의 모델, 용량 등에 따른 특성이 반영되어 저장 장치(140)에 저장된 레이턴시 정보(165)에 기초하여 폴링 지연 시간(TLINFO)을 결정할 수 있다. 이에 따라, 폴링 지연 시간(TLINFO)이 저장 장치(140)의 실제 라이트/리드 레이턴시에 상응할 수 있다. 즉, 폴링 지연 시간(TLINFO)이 커맨드 처리 실행(310) 시간보다 과도하게 길거나 과도하게 짧지 않을 수 있다.
예를 들어, 참조번호 380으로 도시된 바와 같이, 상기 장치 기반 하이브리드 폴링 방식에서, 프로세서(110)는 상기 저장 장치 커맨드를 전송한 후 저장 장치(140)에 저장된 레이턴시 정보(165)에 기초하여 결정된 폴링 지연 시간(TLINFO) 동안 대기 상태(또는 슬립 상태)(385)에 있을 수 있다. 한편, 프로세서(110)가 대기 상태(385)로 진입 및 종료할 때 콘텍스트 스위칭(Context Switching: CS)(384, 386)이 수행될 수 있다. 저장 장치(140)에 저장된 레이턴시 정보(165)에 기초하여 결정된 폴링 지연 시간(TLINFO)은 커맨드 처리 실행(310) 시간에 상응할 수 있다. 따라서, 프로세서(110)는 저장 장치(140)가 커맨드 처리 실행(310)을 완료하는 시점으로부터 적절한 시간 전에 폴링 동작(390)을 개시할 수 있고, 이에 따라 상기 입출력 동작 시간을 감소시키면서 상기 프로세서 부하 또는 상기 프로세서 사용량을 감소시킬 수 있다.
도 7은 본 발명의 다른 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 7을 참조하면, 컴퓨팅 시스템(400)은 프로세서(410), 저장 장치(440), 및 프로세서(410)와 저장 장치(440) 사이에 위치하는 호스트 버스 어댑터(Host Bus Adapter; HBA)(420)를 포함할 수 있다. 일 실시예에서, 컴퓨팅 시스템(400)은 메인 메모리로서 동작하는 메모리 장치(490)를 더 포함할 수 있다. 도 7의 컴퓨팅 시스템(400)은, HBA(420)를 더 포함하는 것을 제외하고, 도 1의 컴퓨팅 시스템(100)과 유사한 구성 및 동작을 가질 수 있다.
HBA(420)는 프로세서(410)와 저장 장치(440) 사이의 물리적 연결(physical connectivity)을 제공할 수 있다. 일 실시예에서, HBA(420)는 프로세서(410)와 PCIe 인터페이스 프로토콜로 통신하고, 저장 장치(440)와 SAS(Serial-attached SCSI(Small Computer System Interface)) 인터페이스 프로토콜로 통신할 수 있으나, 이에 한정되지 않는다.
본 발명은 임의의 저장 장치 및 이를 포함하는 컴퓨팅 시스템에 적용될 수 있다. 예를 들어, 본 발명은 SSD, NVMe SSD, Z-SSD, 옵테인 SSD, MLC 기반 SSD, TLC 기반 SSD, HDD 등의 저장 장치, 및 이를 포함하는 컴퓨팅 시스템에 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 복수의 비휘발성 메모리 장치들을 포함하고, 상기 복수의 비휘발성 메모리 장치들에 유저 데이터와 레이턴시 정보를 저장하는 저장 장치; 및
    상기 저장 장치로부터 상기 레이턴시 정보를 수신하고, 상기 레이턴시 정보에 기초하여 폴링 지연 시간을 결정하며, 상기 저장 장치에 저장 장치 커맨드를 전송하고, 상기 저장 장치 커맨드의 전송 시점으로부터 상기 폴링 지연 시간이 지난 후 상기 저장 장치의 상태를 체크하는 폴링 동작을 개시하는 프로세서를 포함하는 컴퓨팅 시스템.
  2. 제1 항에 있어서, 상기 저장 장치 커맨드는 상기 저장 장치에 상기 유저 데이터를 기입하는 라이트 커맨드, 및 상기 저장 장치로부터 상기 유저 데이터를 독출하는 리드 커맨드를 포함하고,
    상기 레이턴시 정보는 상기 라이트 커맨드를 전송한 후 상기 프로세서의 대기 시간인 라이트 커맨드 폴링 지연 시간, 및 상기 리드 커맨드를 전송한 후 상기 프로세서의 대기 시간인 리드 커맨드 폴링 지연 시간을 포함하는 컴퓨팅 시스템.
  3. 제1 항에 있어서, 상기 저장 장치는 상기 레이턴시 정보를 상기 복수의 비휘발성 메모리 장치들 중 하나에 포함된 필수 제품 데이터(Vital Product Data; VPD) 페이지에 저장하는 컴퓨팅 시스템.
  4. 제3 항에 있어서, 상기 레이턴시 정보는 상기 VPD 페이지의 리저브(Reserved) 필드에 저장된 컴퓨팅 시스템.
  5. 제1 항에 있어서, 상기 레이턴시 정보는, 상기 저장 장치의 제조 시 기입되는 컴퓨팅 시스템.
  6. 제1 항에 있어서, 상기 프로세서는 상기 저장 장치 커맨드의 전송 후 상기 폴링 지연 시간 동안 대기 상태인 컴퓨팅 시스템.
  7. 제1 항에 있어서, 상기 저장 장치는 상기 프로세서에 직접 연결된 컴퓨팅 시스템.
  8. 제1 항에 있어서,
    상기 프로세서와 상기 저장 장치 사이에 위치하는 호스트 버스 어댑터(Host Bus Adapter; HBA)를 더 포함하는 컴퓨팅 시스템.
  9. 저장 장치에 연결되는 프로세서에 있어서,
    상기 프로세서는 상기 저장 장치로부터 상기 저장 장치에 저장된 레이턴시 정보를 수신하고,
    상기 레이턴시 정보에 기초하여 폴링 지연 시간을 결정하며,
    상기 저장 장치에 저장 장치 커맨드를 전송하고,
    상기 저장 장치 커맨드의 전송 시점으로부터 상기 폴링 지연 시간이 지난 후 상기 저장 장치의 상태를 체크하는 폴링 동작을 개시하는 프로세서.
  10. 복수의 비휘발성 메모리 장치들을 포함하는 저장 장치에 있어서,
    상기 저장 장치는 상기 복수의 비휘발성 메모리 장치들에 유저 데이터를 저장하고,
    상기 저장 장치는 저장 장치 커맨드의 폴링 지연 시간을 결정하기 위한 레이턴시 정보를 더욱 저장하는 저장 장치.
KR1020170092989A 2017-07-21 2017-07-21 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템 KR20190010335A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170092989A KR20190010335A (ko) 2017-07-21 2017-07-21 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템
US15/861,326 US20190026220A1 (en) 2017-07-21 2018-01-03 Storage device that stores latency information, processor and computing system
CN201810237644.0A CN109284241A (zh) 2017-07-21 2018-03-21 存储等待时间信息的存储设备、处理器和计算***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170092989A KR20190010335A (ko) 2017-07-21 2017-07-21 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템

Publications (1)

Publication Number Publication Date
KR20190010335A true KR20190010335A (ko) 2019-01-30

Family

ID=65018963

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170092989A KR20190010335A (ko) 2017-07-21 2017-07-21 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템

Country Status (3)

Country Link
US (1) US20190026220A1 (ko)
KR (1) KR20190010335A (ko)
CN (1) CN109284241A (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942677B2 (en) * 2019-01-24 2021-03-09 Silicon Motion, Inc. Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device
US10949115B2 (en) * 2019-06-24 2021-03-16 Western Digital Technologies, Inc. Flash memory polling
CN110337139B (zh) * 2019-07-18 2022-03-08 河南兵峰电子科技有限公司 一种基于无线传感器的低功耗控制方法及无线传感器
KR20210041829A (ko) * 2019-10-08 2021-04-16 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법
JP2021111259A (ja) 2020-01-15 2021-08-02 キオクシア株式会社 メモリシステムとその制御方法
US11636055B2 (en) * 2021-07-14 2023-04-25 Silicon Motion, Inc. Method and apparatus for performing access management of memory device in predetermined communications architecture with aid of flexible delay time control
CN117956014A (zh) * 2024-03-27 2024-04-30 四川省建筑设计研究院有限公司 一种提高物联网设备控制与反馈实时性的方法及***

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7146467B2 (en) * 2003-04-14 2006-12-05 Hewlett-Packard Development Company, L.P. Method of adaptive read cache pre-fetching to increase host read throughput
US20120185749A1 (en) * 2011-01-14 2012-07-19 Hitachi, Ltd. Storage apparatus and response time control method
US20120278819A1 (en) * 2011-04-26 2012-11-01 Byungcheol Cho Polling-driven device driver interface
KR102068342B1 (ko) * 2013-03-07 2020-01-20 삼성전자주식회사 메모리 제어기 및 그것을 포함하는 메모리 시스템
US10215804B2 (en) * 2016-07-27 2019-02-26 International Business Machines Corporation Semiconductor power and performance optimization

Also Published As

Publication number Publication date
US20190026220A1 (en) 2019-01-24
CN109284241A (zh) 2019-01-29

Similar Documents

Publication Publication Date Title
US9229655B2 (en) Controller and method for performing background operations
KR20190010335A (ko) 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템
US12001413B2 (en) Key-value storage device and operating method thereof
US11630766B2 (en) Memory system and operating method thereof
KR20170016548A (ko) 백업 기능을 갖는 메모리 모듈
US11307803B2 (en) Storage device for suspending program operation and performing read operation and operating method thereof
US11264086B2 (en) Memory controller and operating method thereof
US10296233B2 (en) Method of managing message transmission flow and storage device using the method
US20200218653A1 (en) Controller, data storage device, and operating method thereof
US10719263B2 (en) Method of handling page fault in nonvolatile main memory system
KR102406340B1 (ko) 전자 장치 및 그것의 동작 방법
CN110678852A (zh) 控制对缓冲器的存储器操作的设备和方法
KR20190120573A (ko) 메모리 시스템, 데이터 처리 시스템 및 메모리 시스템의 동작 방법
KR20180009463A (ko) 메모리 시스템 및 그 동작 방법
KR20170094674A (ko) 데이터 저장 장치
KR20210031266A (ko) 인터페이스 회로, 메모리 장치, 저장 장치 및 메모리 장치의 동작 방법
KR20190085644A (ko) 데이터 처리 시스템 및 그것의 동작 방법
KR20190023196A (ko) 데이터 저장 장치
KR20190090629A (ko) 메모리 시스템 및 그것의 동작 방법
KR20220045342A (ko) 호스트 장치, 데이터 저장 장치, 데이터 처리 시스템 및 데이터 처리 방법
US20240028204A1 (en) Memory controller and method of operating the same
US11645008B2 (en) Memory system and operating method thereof for controlling a multi-plane read operation
US20230103797A1 (en) Memory controller and method of operating the same
US20240004578A1 (en) Memory system and method of operating memory controller included in the memory system
US20240038317A1 (en) Data coding device, memory controller, and storage device