KR20230100522A - 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템 - Google Patents
스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템 Download PDFInfo
- Publication number
- KR20230100522A KR20230100522A KR1020220010998A KR20220010998A KR20230100522A KR 20230100522 A KR20230100522 A KR 20230100522A KR 1020220010998 A KR1020220010998 A KR 1020220010998A KR 20220010998 A KR20220010998 A KR 20220010998A KR 20230100522 A KR20230100522 A KR 20230100522A
- Authority
- KR
- South Korea
- Prior art keywords
- request
- address
- type
- host
- storage device
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 43
- 238000013507 mapping Methods 0.000 claims abstract description 150
- 238000013519 translation Methods 0.000 claims abstract description 99
- 230000004044 response Effects 0.000 claims abstract description 60
- 230000015654 memory Effects 0.000 claims description 96
- 238000006243 chemical reaction Methods 0.000 claims description 60
- 238000010586 diagram Methods 0.000 description 26
- 101100397117 Arabidopsis thaliana PPA3 gene Proteins 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 101100397118 Arabidopsis thaliana PPA4 gene Proteins 0.000 description 8
- 101000994880 Homo sapiens Inorganic pyrophosphatase 2, mitochondrial Proteins 0.000 description 6
- 102100034415 Inorganic pyrophosphatase 2, mitochondrial Human genes 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012937 correction Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- OXXJZDJLYSMGIQ-ZRDIBKRKSA-N 8-[2-[(e)-3-hydroxypent-1-enyl]-5-oxocyclopent-3-en-1-yl]octanoic acid Chemical compound CCC(O)\C=C\C1C=CC(=O)C1CCCCCCCC(O)=O OXXJZDJLYSMGIQ-ZRDIBKRKSA-N 0.000 description 4
- 101100397119 Arabidopsis thaliana PPA5 gene Proteins 0.000 description 4
- 241001522296 Erithacus rubecula Species 0.000 description 4
- 101001057699 Homo sapiens Inorganic pyrophosphatase Proteins 0.000 description 4
- 102100027050 Inorganic pyrophosphatase Human genes 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 2
- 230000006854 communication Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229940044442 onfi Drugs 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
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)
Abstract
본 개시의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 및 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 외부 호스트로부터 제1 논리 어드레스를 포함하는 제1 타입의 요청을 수신하고, 외부 호스트와 블록 단위로 제1 타입의 요청에 대응하는 데이터를 송수신하고, 제1 물리 어드레스를 포함하는 제2 타입의 요청을 수신하고, 외부 호스트와 블록 단위보다 작은 단위로 제2 타입의 요청에 대응하는 데이터를 송수신하는 멀티-프로토콜 호스트 인터페이스 회로, 및 어드레스 변환 테이블 캐시를 관리하고, 제1 물리 어드레스를 포함하는 어드레스 변환 요청을 외부 호스트로 전송하고, 외부 호스트로부터 제1 물리 어드레스에 대응하는 맵핑 정보를 포함하는 응답을 수신하는 맵핑 캐시 관리자를 포함한다.
Description
본 개시는 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
운영 체제 또는 애플리케이션은 메모리 및 스토리지 장치를 이용한다. 메모리는 데이터를 임시로 저장하는 데에 사용되고, 스토리지 장치는 데이터를 장기간 불휘발성으로 저장하는 데에 사용될 수 있다. 운영 체제는 파일 시스템에 기반하여 스토리지 장치를 관리할 수 있다. 운영 체제는 논리 블록 단위로 스토리지 장치를 액세스할 수 있다. 논리 블록 단위로 액세스 하기 위하여 거치는 소프트웨어의 스택이 복잡하여 레이턴시가 증가하고, 불필요한 데이터 전송으로 인하여 전력 소모가 증가하는 문제가 있다.
본 개시의 목적은 상술된 기술적 과제를 해결하기 위한 것으로, 향상된 성능 및 감소된 비용을 갖는 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템을 제공하는데 있다.
본 개시의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 및 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 외부 호스트로부터 제1 논리 어드레스를 포함하는 제1 타입의 요청을 수신하고, 외부 호스트와 블록 단위로 제1 타입의 요청에 대응하는 데이터를 송수신하고, 제1 물리 어드레스를 포함하는 제2 타입의 요청을 수신하고, 외부 호스트와 블록 단위보다 작은 단위로 제2 타입의 요청에 대응하는 데이터를 송수신하는 멀티-프로토콜 호스트 인터페이스 회로, 및 어드레스 변환 테이블 캐시를 관리하고, 제1 물리 어드레스를 포함하는 어드레스 변환 요청을 외부 호스트로 전송하고, 외부 호스트로부터 제1 물리 어드레스에 대응하는 맵핑 정보를 포함하는 응답을 수신하는 맵핑 캐시 관리자를 포함한다.
본 개시의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치 및 스토리지 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서, 외부 호스트로부터 제1 논리 어드레스 및 블록 단위인 제1 단위의 제1 데이터 크기 정보를 포함하는 제1 타입의 요청을 수신하는 단계, 불휘발성 메모리 장치에 대하여, 제1 타입의 요청에 대응하는 동작을 수행하는 단계, 외부 호스트로부터 제1 물리 어드레스 및 제1 단위보다 작은 제2 단위의 제2 데이터 크기 정보를 포함하는 제2 타입의 요청을 수신하는 단계, 제2 타입의 요청에 응답하여, 제1 물리 어드레스를 포함하는 어드레스 변환 요청을 외부 호스트로 전송하는 단계, 외부 호스트로부터 제1 물리 어드레스에 대응하는 제2 논리 어드레스를 포함하는 응답을 수신하는 단계, 및 제2 논리 어드레스를 포함하는 응답을 기반으로, 불휘발성 메모리 장치에 대하여, 제2 타입의 요청에 대응하는 동작을 수행하는 단계를 포함한다.
본 개시의 실시 예에 따른 스토리지 시스템은 제1 논리 어드레스를 포함하는 제1 타입의 요청을 전송하고, 제1 물리 어드레스를 포함하는 제2 타입의 요청을 전송하고, 논리 어드레스 및 물리 어드레스 사이의 맵핑 정보들을 관리하는 호스트, 및 호스트로부터 상기 제1 타입의 요청 및 제2 타입의 요청을 수신하고, 맵핑 정보들의 일부를 캐싱하여 어드레스 맵핑 테이블 캐시를 관리하고, 제1 타입의 요청에 응답하여 블록 단위로 데이터를 액세스하도록 제공하고, 제2 타입의 요청에 응답하여 블록 단위보다 작은 단위로 데이터를 액세스하도록 제공하는 스토리지 장치를 포함한다.
본 개시의 실시 예에 따르면, 스토리지 장치는 블록 기반 인터페이스 및 메모리 기반 인터페이스를 제공할 수 있다. 따라서, 향상된 성능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템이 제공된다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 예시적으로 보여주는 도면이다.
도 3은 도 1의 스토리지 장치의 동작 방법의 예를 설명하기 위한 도면이다.
도 4는 도 1의 스토리지 장치의 동작의 예를 보여주는 순서도이다.
도 5는 도 4의 S140 단계 및 S150 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 6a 내지 도 6e는 도 1의 스토리지 시스템의 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7c는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 8은 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 9a 및 도 9b는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 10은 도 1의 스토리지 장치의 스케줄링 동작을 설명하기 위한 도면이다.
도 11은 도 1의 스토리지 장치의 스케줄링 동작을 설명하기 위한 도면이다.
도 12a 내지 도 12d는 도 1의 스토리지 장치의 요청 처리 순서를 설명하기 위한 도면들이다.
도 13은 도 1의 스토리지 장치의 동작의 예를 보여주는 순서도이다.
도 14는 중재 정보의 예를 보여주는 도면이다.
도 15는 도 1의 멀티-프로토콜 호스트 인터페이스 회로의 예를 보여주는 블록도이다.
도 16은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 예시적으로 보여주는 도면이다.
도 3은 도 1의 스토리지 장치의 동작 방법의 예를 설명하기 위한 도면이다.
도 4는 도 1의 스토리지 장치의 동작의 예를 보여주는 순서도이다.
도 5는 도 4의 S140 단계 및 S150 단계를 좀 더 구체적으로 보여주는 순서도이다.
도 6a 내지 도 6e는 도 1의 스토리지 시스템의 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7c는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 8은 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 9a 및 도 9b는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다.
도 10은 도 1의 스토리지 장치의 스케줄링 동작을 설명하기 위한 도면이다.
도 11은 도 1의 스토리지 장치의 스케줄링 동작을 설명하기 위한 도면이다.
도 12a 내지 도 12d는 도 1의 스토리지 장치의 요청 처리 순서를 설명하기 위한 도면들이다.
도 13은 도 1의 스토리지 장치의 동작의 예를 보여주는 순서도이다.
도 14는 중재 정보의 예를 보여주는 도면이다.
도 15는 도 1의 멀티-프로토콜 호스트 인터페이스 회로의 예를 보여주는 블록도이다.
도 16은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(100)를 포함할 수 있다. 일 실시 예에서, 스토리지 시스템(10)은 개인용 컴퓨터, 랩탑, 서버, 워크스테이션, 스마트폰, 태블릿 PC, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하고, 처리된 정보를 저장하도록 구성된 정보 처리 장치들 중 하나일 수 있다.
호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 데이터(DATA)를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터(DATA)를 읽기 위한, 요청(RQ; request)(또는 커맨드)을 스토리지 장치(100)로 전송할 수 있다. 일 실시 예에서, 호스트(11)는 스토리지 시스템(10)을 제어하도록 구성된 중앙 처리 유닛(CPU; central processing unit), 애플리케이션 프로세서(AP; application processor)와 같은 프로세서 코어이거나 또는 네트워크를 통해 연결된 컴퓨팅 노드일 수 있다.
일 실시 예에서, 호스트(11)는 호스트 컨트롤러(12) 및 호스트 메모리(13)를 포함할 수 있다. 호스트 컨트롤러(12)는 호스트(11)의 제반 동작을 제어하거나 또는 호스트(11) 측에서, 스토리지 장치(100)를 제어하도록 구성된 장치일 수 있다. 호스트 메모리(13)는 호스트(11)에서 사용되는 버퍼 메모리, 캐시 메모리 또는 동작 메모리일 수 있다.
일 실시 예에서, 호스트(11)는 스토리지 장치(100)로 제1 타입의 요청(T1RQ) 및 제2 타입의 요청(T2RQ)을 전송할 수 있다. 예를 들어, 제1 타입의 요청(T1RQ)에 대응하는 패킷 포맷은 NVMe(Non-Volatile Memory express)TM일 수 있다. 제1 타입의 요청(T1RQ)은 블록 기반 액세스에 사용될 수 있다. 즉, 제1 타입의 요청(T1RQ)은 논리 블록 어드레스(LBA; Logical Block Address)(또는 논리 어드레스(LA; Logical Address))를 포함하는 블록 기반 요청일 수 있다. 블록 기반 요청은 데이터가 기입될 위치 또는 데이터를 읽을 위치를 논리 블록 어드레스(LBA)를 이용하여 가리킬 수 있다.
제1 타입의 요청(T1RQ)은 블록 단위의 데이터 크기 정보를 포함할 수 있다. 데이터 크기 정보는 전송되는 데이터의 크기를 가리킬 수 있다. 예를 들어, 제1 타입의 읽기 요청에서 데이터 크기 정보는 스토리지 장치(100)로부터 호스트(11)로 전송되는 읽기 데이터의 크기를 가리키고, 제1 타입의 쓰기 요청에서 데이터 크기 정보는 호스트(11)에서 스토리지 장치(100)로 전송되는 쓰기 데이터의 크기를 가리킬 수 있다. 제1 타입의 요청(T1RQ)에 대응하는 데이터의 단위는 논리 블록 크기(예를 들어, 512byte) 또는 페이지 크기(예를 들어, 4KB)일 수 있다. 단, 본 개시의 범위가 이에 한정되지 아니한다.
예를 들어, 제2 타입의 요청(T2RQ)은 물리 어드레스(PA; Physical Address)를 포함하는 메모리 기반 요청일 수 있다. 메모리 기반 요청은 데이터가 기입될 위치 또는 데이터를 읽을 위치를 물리 어드레스(PA)를 이용하여 가리킬 수 있다. 제2 타입의 요청(T2RQ)은 블록 단위(또는 페이지 단위) 보다 작은 단위(예를 들어, 바이트 단위 또는 캐시 라인 단위)의 데이터 크기 정보를 포함할 수 있다. 데이터 크기 정보는 전송되는 데이터의 크기를 가리킬 수 있다. 예를 들어, 제2 타입의 읽기 요청에서 데이터 크기 정보는 스토리지 장치(100)로부터 호스트(11)로 전송되는 읽기 데이터의 크기를 가리키고, 제2 타입의 쓰기 요청에서 데이터 크기 정보는 호스트(11)에서 스토리지 장치(100)로 전송되는 쓰기 데이터의 크기를 가리킬 수 있다. 제2 타입의 요청(T2RQ)에 대응하는 데이터의 단위는 바이트(byte) 또는 캐시 라인 크기일 수 있다. 단, 본 개시의 범위가 이에 한정되지 아니한다.
도 1에서 스토리지 시스템(10)이 한 개의 호스트를 포함하는 것으로 도시되었지만, 스토리지 시스템(10)은 복수의 호스트들을 포함할 수 있다. 복수의 호스트들 각각은 스토리지 장치(100)를 액세스하도록 구성될 수 있다. 예를 들어, 복수의 호스트들 각각은 서로 독립적으로 동작하도록 구성된 컴퓨팅 노드일 수 있다. 복수의 호스트들 각각은 서로 다른 컴퓨팅 노드(또는 컴퓨팅 시스템)에 포함된, 싱글 코어 또는 멀티 코어 프로세서일 수 있다. 또는 복수의 호스트들 중 적어도 일부는 동일한 컴퓨팅 노드(또는 컴퓨팅 시스템)에 포함된 서로 다른 프로세서일 수 있다. 또는 복수의 호스트들 각각은 서로 다른 애플리케이션을 처리하도록 구성된 프로세스들일 수 있다.
일 실시 예에서, 스토리지 시스템(10)은 가속기(미도시)를 더 포함할 수 있다. 가속기는 호스트 대신에 데이터에 대해 다양한 종류의 산술 연산, 계산 등을 실행할 수 있다. 가속기는 스토리지 장치(100)를 액세스하도록 구성될 수 있다. 예를 들어, 가속기는 스토리지 장치(100)로 제1 타입의 요청(T1RQ) 및 제2 타입의 요청(T2RQ)을 전송할 수 있다.
스토리지 장치(100)는 호스트(11)의 제어에 따라 동작할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함할 수 있다. 스토리지 컨트롤러(110)는 호스트(11)의 제어에 따라 불휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 일 실시 예에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다.
일 실시 예에서, 스토리지 장치(100)는 맵핑 테이블(MT) 및 어드레스 변환 테이블 캐시(ATTC)를 포함할 수 있다. 맵핑 테이블(MT)은 불휘발성 메모리 장치(120)의 물리 페이지 어드레스(PPA) 및 호스트(11)로부터의 논리 어드레스(LA) 사이의 맵핑 정보를 포함할 수 있다. 어드레스 변환 테이블 캐시(ATTC)는 호스트(11)로부터의 물리 어드레스(PA) 및 호스트(11)로부터의 논리 어드레스(LA) 사이의 맵핑 정보를 포함할 수 있다. 예를 들어, 맵핑 테이블(MT) 및 어드레스 변환 테이블 캐시(ATTC)는 버퍼 메모리(115) 또는 불휘발성 메모리 장치(120)에 저장될 수 있다.
물리 어드레스(PA)는 호스트(11)에 의해 관리되는 하드웨어 메모리 장치의 실제 물리 어드레스를 가리킬 수 있다. 호스트(11)는 적어도 하나의 메모리 장치들(예를 들어, 캐시 메모리(미도시), 호스트 메모리(13), 스토리지 장치(100) 등)의 저장 공간을 물리 어드레스(PA)로서 인식하거나 관리할 수 있다. 즉, 물리 어드레스(PA)는 적어도 하나의 메모리 장치의 저장 공간을 바이트 단위 또는 캐시 라인 단위로 액세스하는데 사용될 수 있다.
논리 어드레스(LA)는 호스트(11)에 의해 관리되는 논리 블록 어드레스(LBA; logical block address)를 가리킬 수 있다. 호스트(11)의 파일 시스템 계층(FS)은 스토리지 장치(100)의 저장 공간을 논리 어드레스(LA)로서 인식하거나 관리할 수 있다. 즉, 논리 어드레스(LA)는 스토리지 장치(100)의 저장 공간을 블록 단위 또는 페이지 단위로 액세스하는데 사용될 수 있다.
물리 페이지 어드레스(PPA)는 스토리지 컨트롤러(110)에 의해 관리되는 불휘발성 메모리 장치(120)의 실제 물리 어드레스를 가리킬 수 있다. 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)의 저장 공간을 물리 페이지 어드레스(PPA)로서 인식하거나 관리할 수 있다. 즉, 물리 페이지 어드레스(PPA)는 불휘발성 메모리 장치(120)의 저장 공간을 페이지 단위로 액세스하는데 사용될 수 있다.
일 실시 예에서, 호스트(11)는 스토리지 장치(100)의 저장 공간을 논리 어드레스(LA) 또는 물리 어드레스(PA)로 액세스할 수 있다. 예를 들어, 스토리지 장치(100)의 저장 공간이 메모리 맵 된(memory mapped) 영역으로 호스트(11)에 노출될 수 있다. 또는 스토리지 장치(100)의 저장 공간이 블록 기반 액세스가 허용되는 영역으로서도 호스트(11)에 노출될 수 있다.
이하에서, 설명의 편의를 위하여, 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환하는 동작은 “제1 어드레스 변환 동작”이라 칭하고, 물리 어드레스(PA)를 논리 어드레스(LA)로 변환하는 동작은 “제2 어드레스 변환 동작”이라 칭한다.
스토리지 컨트롤러(110)는 중앙 처리 유닛(CPU; central processing unit)(111), 플래시 변환 계층(FTL; flash translation layer)(112), 에러 정정 코드(ECC; error correction code) 엔진(113), AES(advanced encryption standard) 엔진(114), 버퍼 메모리(115), 멀티-프로토콜 호스트 인터페이스 회로(116), 메모리 인터페이스 회로(117), 맵핑 캐시(mapping cache) 관리자(118), 및 요청 스케줄러(119)를 포함할 수 있다.
CPU(111)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. FTL(112)은 불휘발성 메모리 장치(120)를 효율적으로 사용하기 위한 다양한 동작을 수행할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)의 저장 공간을 논리 어드레스(LA)로서 관리할 수 있다.
FTL(112)은 호스트(11)로부터의 논리 어드레스(LA) 및 스토리지 장치(100)의 물리 페이지 어드레스(PPA) 사이의 어드레스 맵핑을 관리하도록 구성될 수 있다. 즉, FTL(112)은 맵핑 테이블(MT)을 관리할 수 있다. FTL(112)는 제1 어드레스 변환 동작을 수행할 수 있다. 예를 들어, FTL(112)은 맵핑 테이블(MT)을 참조하여 제1 타입의 요청(T1RQ)의 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다. FTL(112)은 맵핑 테이블(MT)을 참조하여, 제2 타입의 요청(T2RQ)의 물리 어드레스(PA)를 기반으로 변환된 논리 어드레스(LA)를 수신하고, 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다.
FTL(112)은 웨어 레벨링 동작을 수행하여, 불휘발성 메모리 장치(120)의 메모리 블록(뜨는 블록)들 중 특정 메모리 블록에 대한 과도한 열화를 방지할 수 있다. FTL(112)의 웨어 레벨링 동작에 의해 불휘발성 메모리 장치(120)의 수명이 향상될 수 있다. FTL(112)은 불휘발성 메모리 장치(120)에 대한 가비지 컬렉션을 수행하여, 자유 메모리 블록을 확보할 수 있다.
일 실시 예에서, FTL(112)은 소프트웨어 또는 하드웨어 형태로 구현될 수 있다. FTL(112)이 소프트웨어 형태로 구현되는 경우, FTL(112)과 관련된 프로그램 코드 또는 정보는 버퍼 메모리(115)에 저장될 수 있고, CPU(111)에 의해 실행될 수 있다. FTL(112)이 하드웨어 형태로 구현되는 경우, FTL(112)의 동작을 수행하도록 구성된 하드웨어 가속기가 CPU(111)와 별도로 구비될 수 있다.
ECC 엔진(113)은 불휘발성 메모리 장치(120)로부터 읽은 데이터에 대한 에러 검출 및 에러 정정을 수행할 수 있다. 예를 들어, ECC 엔진(113)은 불휘발성 메모리 장치(120)에 기입될 데이터에 대한 에러 정정 코드(또는 패리티 비트)를 생성할 수 있다. 생성된 에러 정정 코드(또는 패리티 비트)는 기입될 데이터와 함께 불휘발성 메모리 장치(120)에 저장될 수 있다. 이후에, 불휘발성 메모리 장치(120)로부터 기입된 데이터가 독출될 경우, ECC 엔진(113)은 독출된 데이터 및 대응하는 에러 정정 코드(또는 대응하는 패리티 비트)를 기반으로 독출된 데이터의 에러를 검출하고 정정할 수 있다.
AES 엔진(114)은 호스트(11) 또는 불휘발성 메모리 장치(120)로부터 수신된 데이터에 대한 암호화(encryption) 동작 또는 복호화 동작(decryption) 동작을 수행할 수 있다. 일 실시 예에서, 암호화(encryption) 동작 또는 복호화 동작(decryption) 동작은 대칭 키 알고리즘(symmetric-key algorithm)을 기반으로 수행될 수 있다.
버퍼 메모리(115)는 스토리지 컨트롤러(110)로 입력된 데이터를 임시 저장하도록 구성된 쓰기 버퍼 또는 읽기 버퍼일 수 있다. 또는 버퍼 메모리(115)는 스토리지 컨트롤러(110)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. 예를 들어, 버퍼 메모리(115)는 FTL(112)에 의해 관리되는 맵핑 테이블을 저장할 수 있다. 또는 버퍼 메모리(115)는 FTL(112)과 관련된 소프트웨어, 펌웨어, 또는 정보를 저장할 수 있다.
일 실시 예에서, 버퍼 메모리(115)는 SRAM일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니며, 버퍼 메모리(115)는 DRAM, MRAM, PRAM 등과 같은 다양한 종류의 메모리 장치로 구현될 수 있다. 도면의 간결성 및 설명의 편의를 위해, 버퍼 메모리(115)가 스토리지 컨트롤러(110)에 포함되는 것으로 도 1에 도시되어 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 버퍼 메모리(115)는 스토리지 컨트롤러(110)의 외부에 위치할 수 있고, 스토리지 컨트롤러(110)는 별도의 통신 채널 또는 인터페이스를 통해 버퍼 메모리와 통신할 수 있다.
일 실시 예에서, 버퍼 메모리(115)는 맵핑 테이블(MT) 및 어드레스 변환 테이블 캐시(ATTC)를 저장할 수 있다. 또는 버퍼 메모리(115)는 중재 동작과 관련된 정보(예를 들어, 파라미터 등)를 저장할 수 있다.
멀티-프로토콜 호스트 인터페이스 회로(116)는 미리 정해진 인터페이스 규약에 따라, 호스트(11)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial ATA) 인터페이스, e-SATA(external SATA) 인터페이스, SCSI(Small Computer Small Interface) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, PCI(Peripheral Component Interconnection) 인터페이스, PCIe(PCI express) 인터페이스, NVMe(NVM express) 인터페이스, IEEE 1394, USB(universal serial bus) 인터페이스, SD(secure digital) 카드, MMC(multi-media card) 인터페이스, eMMC(embedded multi-media card) 인터페이스, UFS(Universal Flash Storage) 인터페이스, eUFS(embedded Universal Flash Storage) 인터페이스, CF(compact flash) 카드 인터페이스, 또는 네트워크 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 멀티-프로토콜 호스트 인터페이스 회로(116)는 미리 정해진 인터페이스 규약에 기반된 신호를 호스트(11)로부터 수신하고, 수신된 신호를 기반으로 동작할 수 있다. 또는 멀티-프로토콜 호스트 인터페이스 회로(116)는 미리 정해진 인터페이스 규약에 기반된 신호를 호스트(11)로 전송할 수 있다.
일 실시 예에서, 멀티-프로토콜 호스트 인터페이스 회로(116)는 적어도 두개의 인터페이스를 통해 호스트(11)와 통신할 수 있다. 예를 들어, 멀티- 프로토콜 호스트 인터페이스 회로(116)는 제1 타입의 요청(T1RQ)을 송수신하는 블록 인터페이스를 통해 호스트(11)와 통신하고, 제2 타입의 요청(T2RQ)을 송수신하는 메모리 인터페이스를 통해 호스트(11)와 통신할 수 있다. 멀티-프로토콜 호스트 인터페이스 회로(116)의 구성 및 동작 방법에 관한 보다 상세한 설명은 도 3에서 설명된다.
메모리 인터페이스 회로(117)는 미리 정해진 인터페이스 규약에 따라 불휘발성 메모리 장치(120)와 통신하도록 구성될 수 있다. 일 실시 예에서, 미리 정해진 인터페이스 규약은 토글 인터페이스, 온파이(ONFI) 인터페이스 등과 같은 다양한 인터페이스 규약들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, 메모리 인터페이스 회로(117)는 토글 인터페이스를 기반으로 불휘발성 메모리 장치(120)와 통신할 수 있다. 이 경우, 메모리 인터페이스 회로(117)는 복수의 채널들(CHs)을 통해 불휘발성 메모리 장치(120)와 통신할 수 있다. 일 실시 예에서, 복수의 채널들(CHs) 각각은 다양한 제어 신호들(예를 들어, /CE, CLE, ALE, /WE, /RE, R/B 등), 데이터 신호들(DQ), 및 데이터 스트로브 신호(DQS)를 전송하도록 구성된 복수의 신호 라인들을 포함할 수 있다.
일 실시 예에서, 맵핑 캐시 관리자(118)는 호스트(11)에서 관리되는 어드레스 맵핑 정보를 캐싱할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)는 호스트(11)에서 관리되는 어드레스 맵핑 정보 중 자주 액세스된 일부를 캐싱하고, 이를 어드레스 변환 테이블 캐시(ATTC)로 관리할 수 있다. 다시 말해서, 맵핑 캐시 관리자(118)는 물리 어드레스(PA) 및 논리 어드레스(LA) 사이의 어드레스 맵핑을 관리할 수 있다.
일 실시 예에서, 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 관리할 수 있다. 예를 들어, 어드레스 변환 테이블 캐시(ATTC)는 태그와 데이터를 포함하는 복수의 엔트리들을 포함할 수 있다. 예를 들어, 태그는 물리 어드레스(PA)의 정보가 저장되고, 데이터는 논리 어드레스(LA)의 정보가 저장될 수 있다.
맵핑 캐시 관리자(118)는 주어진 물리 어드레스(PA)에 대한 변환이 어드레스 변환 테이블 캐시(ATTC)에 캐싱되었는지를 확인할 수 있다. 물리 어드레스(PA)에 대한 변환(맵핑 정보)이 어드레스 변환 테이블 캐시(ATTC) 내에 캐싱되어 있으면(캐시 히트(cache hit)), 그 변환이 즉시 이용 가능할 수 있다. 어드레스 변환 테이블 캐시(ATTC) 내에 물리 어드레스(PA)에 대한 유효한 변환이 존재하지 않으면(캐시 미스(cache miss)), 변환 요청을 통해 물리 어드레스(PA)에 대한 변환이 어드레스 변환 테이블 캐시(ATTC) 내에 업데이트될 수 있다.
일 실시 예에서, 맵핑 캐시 관리자(118)는 캐시 일관성(cache coherence)을 지원할 수 있다. 예를 들어, 스토리지 시스템(10)은 CXL(Compute eXpress Link)TM 프로토콜(예를 들어, CXL.cache)을 이용하여 캐시 일관성을 제공할 수 있다. 스토리지 시스템(10)은 스눕 요청(snoop request) 및 응답을 통해 캐시 일관성을 제공할 수 있다. 스토리지 시스템(10)은 캐시 일관성 디렉토리를 통해 캐시 일관성을 제공할 수 있다.
맵핑 캐시 관리자(118)는 제2 어드레스 변환 동작을 수행할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)는 제2 타입의 요청(T2RQ)을 수신하고, 제2 타입의 요청(T2RQ)에서 물리 어드레스(PA)를 판별하고, 어드레스 변환 테이블 캐시(ATTC)를 참조하여 물리 어드레스(PA)를 논리 어드레스(LA)로 변환할 수 있다.
일 실시 예에서, 맵핑 캐시 관리자(118)는 제2 타입의 요청(T2RQ)들과 관련하여, 캐시 미스 및 캐시 히트의 비율을 판별할 수 있다. 맵핑 캐시 관리자(118)는 캐시 미스 및 캐시 히트의 비율과 관련된 정보를 요청 스케줄러(119)로 전송할 수 있다.
요청 스케줄러(119)는 호스트(11)로부터 요청들을 스케줄링하도록 구성될 수 있다. 예를 들어, 요청 스케줄러(119)는 제1 타입 요청들 및 제2 타입 요청들을 스케줄링하도록 구성될 수 있다. 요청 스케줄러(119)는 처리되는 요청들을 모니터링함으로써 성능을 검출하고 관리하도록 구성될 수 있다.
일 실시 예에서, 요청 스케줄러(119)는 호스트(11)로부터 중재 정보를 수신할 수 있다. 요청 스케줄러(119)는 중재 정보를 기반으로 요청들을 오더링(ordering)할 수 있다. 요청 스케줄러(119)는 현재 입출력 요청들의 상태, QoS 설정(QoS configuration), 맵핑 캐시 관리자(118)로부터 수신된 캐시 미스 및 캐시 히트의 비율에 관한 정보들을 고려하여, 요청들을 스케줄링 할 수 있다.
불휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라, 데이터를 저장하거나, 저장된 데이터를 출력하거나, 또는 저장된 데이터를 소거하도록 구성될 수 있다. 일 실시 예에서, 불휘발성 메모리 장치(120)는 2차원 또는 3차원낸드 플래시 메모리 장치일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치(120)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리에 기반된 메모리 장치일 수 있다. 일 실시 예에서, 불휘발성 메모리 장치(120)는 복수의 불휘발성 메모리들을 포함할 수 있고, 복수의 불휘발성 메모리들 각각은 별도의 칩, 별도의 패키지로 구현될 수 있다. 스토리지 컨트롤러(110)는 복수의 채널들을 통해 불휘발성 메모리 장치(120)의 복수의 불휘발성 메모리들과 각각 통신할 수 있다.
상술된 바와 같이, 본 개시의 실시 예에 따른 스토리지 장치(100)는 호스트(11)에 의해 관리되는 어드레스 맵핑 정보를 캐싱하고, 캐시 일괄정을 제공할 수 있다. 또한 스토리지 장치(100)는 블록 인터페이스 및 메모리 인터페이스 모두 지원할 수 있다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 예시적으로 보여주는 도면이다. 도 1 및 도 2를 참조하면, 스토리지 시스템(10)의 소프트웨어 계층은 애플리케이션 계층(APP), 파일 시스템 계층(FS), 어드레스 관리자(AM), 장치 드라이버 계층(DD), 맵핑 캐시 관리자(118), 및 플래시 변환 계층(112)을 포함할 수 있다.
애플리케이션 계층(APP)은 호스트(11)에서 구동되는 다양한 응응 프로그램들을 포함할 수 있다. 파일 시스템 계층(FS)은 애플리케이션 계층(APP)에서 의해 사용되는 파일 또는 데이터를 조직화하도록 구성될 수 있다. 예를 들어, 파일 시스템 계층(FS)은 스토리지 장치(100)의 저장 공간을 논리 블록 어드레스(LBA; logical block address)로서 관리할 수 있다. 파일 시스템 계층(FS)은 스토리지 장치(100)에 저장된 데이터에 대하여 논리 블록 어드레스를 부여하고 관리할 수 있다. 일 실시 예에서, 파일 시스템 계층(FS)은 호스트(11)의 운영 체제(OS)에 따라 다른 형태를 가질 수 있다. 파일 시스템 계층(FS)은 FAT(File Allocation Table), FAT32, NTFS(NT File System), HFS(Hierarchical File System), JSF2(Journaled File System2), XFS, ODS-5(On-Disk Structure-5), UDF, ZFS, UFS(Unix File System), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, WinFS 등과 같은 다양한 파일 시스템 형태들 중 적어도 하나를 포함할 수 있다.
어드레스 관리자(AM)는 스토리지 장치(100)의 저장 공간을 물리 어드레스(PA)로서 관리할 수 있다. 어드레스 관리자(AM)는 물리 어드레스(PA)를 논리 어드레스(LA)로 변환하거나 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 즉, 어드레스 관리자(AM)는 물리 어드레스 공간을 논리 어드레스 공간으로 맵핑하거나, 논리 어드레스 공간을 물리 어드레스 공간으로 맵핑할 수 있다. 어드레스 관리자(AM)는 논리 어드레스(LA) 및 물리 어드레스(PA)에 관한 맵핑 정보를 관리할 수 있다.
일 실시 예에서, 어드레스 관리자(AM)는 스토리지 장치(100)의 변환 요청에 응답하여, 물리 어드레스(PA)를 논리 어드레스(LA)로 변환하고, 논리 어드레스(LA)를 포함하는 응답을 스토리지 장치(100)로 전송할 수 있다. 어드레스 관리자(AM)는 맵핑 정보가 갱신되면, 스토리지 장치(100)로 무효화 요청 또는 갱신 요청을 전송할 수 있다.
장치 드라이버 계층(DD)은 어드레스 관리자(AM), 파일 시스템 계층(FS) 또는 애플리케이션 계층(APP)으로부터의 정보를 스토리지 장치(100)에서 인식 가능한 정보로 변환하는 동작을 수행할 수 있다. 일 실시 예에서, 애플리케이션 계층(APP), 파일 시스템 계층(FS), 어드레스 관리자(AM), 및 장치 드라이버 계층(DD)은 소프트웨어 형태로 구현될 수 있으며, 호스트(11) 상에서 구동될 수 있다.
맵핑 캐시 관리자(118)는 어드레스 관리자(AM)가 관리하는 어드레스 맵핑 정보 일부를 캐싱할 수 있다. 맵핑 캐시 관리자(118)는 자주 접근되는 어드레스 맵핑 정보를 캐싱할 수 있다. 맵핑 캐시 관리자(118)는 캐시 미스인 경우 변환 요청을 통해 어드레스 관리자(AM)로부터 맵핑 정보를 수신하고 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여 물리 어드레스(PA)를 논리 어드레스(LA)로 변환할 수 있다.
FTL(112)은 호스트(11)로부터 수신된 요청의 논리 어드레스(LA)를 불휘발성 메모리 장치(120)에서 사용되는 물리 페이지 어드레스(PPA)로 변환하도록 구성될 수 있다.
일반적인 스토리지 시스템에서, 스토리지 장치는 블록 또는 페이지 단위의 입출력 요청만 제공한다. 블록 또는 페이지 단위의 입출력 요청은 파일 시스템 계층(FS) 등을 통해 스토리지 장치로 제공된다. 애플리케이션 계층(APP)이 필요한 데이터의 크기가 블록 또는 페이지 단위보다 작을수록, 소프트웨어 계층들의 오버헤드가 증가하며 불필요한 데이터의 전송이 증가된다. 이에 따라, 애플리케이션 계층(APP)의 성능이 감소되고, 스토리지 시스템 전체의 전력/에너지 효율이 감소된다.
본 개시의 실시 예에 따른 스토리지 장치(100)는 제1 타입의 입출력 요청 및 제2 타입의 입출력 요청을 모두 처리할 수 있다. 즉, 스토리지 장치(100)는 블록 또는 페이지 단위의 입출력 요청을 제공하고, 블록 또는 페이지 단위보다 작은 단위(예를 들어, 바이트 단위)의 입출력 요청을 제공할 수 있다. 다시 말해서, 스토리지 장치(100)는 블록 인터페이스 및 메모리 인터페이스를 모두 제공할 수 있다.
애플리케이션 계층(APP)은 블록 또는 페이지 단위보다 작은 크기의 데이터가 필요한 경우, 제2 타입의 입출력 요청을 통해 스토리지 장치(100)에 액세스할 수 있다. 즉, 본 개시의 실시 예에 따른 스토리지 시스템(10)은 제2 타입의 입출력 요청을 통해 블록 단위의 입출력 요청을 처리하는데 필요한 소프트웨어 스택(stack)(예를 들어, 파일 시스템 계층(FS) 등) 중 일부를 바이패스하고, 인터럽트 처리가 제거될 수 있다. 이에 따라, 스토리지 장치에 저장된 데이터 액세스에 대한 레이턴시가 감소될 수 있다. 블록 또는 페이지 단위보다 작은 크기의 데이터만 액세스 하므로, 불필요한 데이터 전송이 감소될 수 있다. 이에 따라 전력/에너지 효율이 개선될 수 있다. 즉, 호스트 및 스토리지 장치 사이의 인터페이스가 간결해질 수 있으며, 이에 따라 향상된 성능 및 감소된 비용을 갖는 스토리지 시스템이 제공된다.
도 3은 도 1의 스토리지 장치의 동작 방법의 예를 설명하기 위한 도면이다. 도 1 및 도 3을 참조하며, 호스트(11)는 제1 타입의 요청(T1RQ) 및 제2 타입의 요청(T2RQ)을 스토리지 장치(100)로 전송할 수 있다. 제1 타입의 요청(T1RQ)은 논리 어드레스(LA)를 포함하고, 제2 타입의 요청(T2RQ)은 물리 어드레스(PA)를 포함할 수 있다.
일 실시 예에서, 스토리지 장치(100)의 멀티-프로토콜 호스트 인터페이스 회로(116)는 패킷 중재기(131), 블록 기반 인터페이스 회로(132) 및 메모리 기반 인터페이스 회로(133)를 포함할 수 있다. 패킷 중재기(131)는 외부 장치로부터 제1 타입의 요청(T1RQ) 및 제2 타입의 요청(T2RQ)을 수신할 수 있다. 패킷 중재기(131)는 제1 타입의 요청(T1RQ)을 블록 기반 인터페이스 회로(132)로 전달할 수 있다. 패킷 중재기(131)는 제2 타입의 요청(T2RQ)을 메모리 기반 인터페이스 회로(133)로 전달할 수 있다.
일 실시 예에서, 블록 기반 인터페이스 회로(132)는 제1 타입의 요청(T1RQ)을 FTL(112)에 전달할 수 있다. FTL(112)은 제1 타입의 요청(T1RQ)에 수반되는 동작들을 제어하며, 맵핑 테이블(MT)을 참조하여 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다. FTL(112)은 제1 타입의 요청(T1RQ)에 대응하는 커맨드를 불휘발성 메모리 장치(120)에 전송할 수 있다.
일 실시 예에서, 메모리 기반 인터페이스 회로(133)는 제2 타입의 요청(T2RQ)을 맵핑 캐시 관리자(118)로 전달할 수 있다. 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여 물리 어드레스(PA)를 논리 어드레스(LA)로 변환할 수 있다. 맵핑 캐시 관리자(118)는 제2 타입의 요청(T2RQ) 및 논리 어드레스(LA)를 FTL(112)로 전달할 수 있다. FTL(112)은 제2 타입의 요청(T2RQ)에 수반되는 동작들을 제어하며, 맵핑 테이블(MT)을 참조하여 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다. FTL(112)은 제2 타입의 요청(T2RQ)에 대응하는 커맨드를 불휘발성 메모리 장치(120)에 전송할 수 있다.
상술된 바와 같이, 스토리지 장치(100)는 멀티-프로토콜 인터페이스(또는 이종의 프로토콜 인터페이스)를 제공하며, 호스트(11)는 멀티-프로토콜을 통해 스토리지 장치(100)의 저장 공간에 동시에 액세스할 수 있다. 즉, 호스트(11)는 제1 타입의 요청 및 제2 타입의 요청 모두를 통해 스토리지 장치(100)의 저장 공간에 동시에 접근할 수 있다.
도 4는 도 1의 스토리지 장치의 동작의 예를 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S110 단계에서, 스토리지 장치(100)는 외부 호스트(11)로부터 제2 타입의 요청(T2RQ)(또는, 제2 타입의 입출력 요청)을 수신할 수 있다. 예를 들어, 입출력 요청은 읽기 요청 또는 쓰기 요청 등을 포함할 수 있다. 제2 타입의 요청(T2RQ)은 물리 어드레스(PA), 및 데이터의 크기 등을 포함할 수 있다. 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에서 물리 어드레스(PA)를 검출할 수 있다. 즉, 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에 대응하는 물리 어드레스(PA)를 판별할 수 있다.
S120 단계에서, 스토리지 장치(100)는 캐시 히트인지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)에 물리 어드레스(PA)에 대응하는 맵핑 정보가 존재하는지 판별할 수 있다. 캐시 히트는 제2 타입의 요청(T2RQ)에 포함된 물리 어드레스(PA)에 대응하는 맵핑 정보가 어드레스 변환 테이블 캐시(ATTC)에 존재하는 경우를 가리킬 수 있다. 캐시 미스(cache miss)는 제2 타입의 요청(T2RQ)에 포함된 물리 어드레스(PA)에 대응하는 맵핑 정보가 어드레스 변환 테이블 캐시(ATTC)에 존재하지 않는 경우를 가리킬 수 있다. 캐시 히트인 경우 스토리지 장치(100)는 S160 단계를 수행하고, 캐시 미스인 경우 스토리지 장치(100)는 S130 단계를 수행한다.
S130 단계에서, 스토리지 장치(100)는 호스트(11)로 변환 요청을 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 물리 어드레스(PA) 및 논리 어드레스(LA)의 맵핑 정보를 요청하는 어드레스 변환 요청을 호스트(11)로 전송할 수 있다. 변환 요청은 변환되지 않은 어드레스 또는 변환이 필요한 어드레스를 포함할 수 있다. 즉, 변환 요청은 물리 어드레스(PA)를 포함할 수 있다.
예를 들어 스토리지 컨트롤러(110)는 PCIe의 어드레스 변환 서비스(ATS; Address Translation Services)를 이용하여, 맵핑 정보를 요청할 수 있다. 스토리지 컨트롤러(110)는 ATS의 변환 요청(Translation Requests)을 통해 맵핑 정보를 요청할 수 있다. 또는 스토리지 컨트롤러(110)는 CXL(Compute eXpress Link)TM 프로토콜(예를 들어, CXL.cache)을 이용하여 맵핑 정보를 요청할 수 있다. 단, 본 개시의 범위가 이에 한정되는 것은 아니다.
S140 단계에서, 스토리지 장치(100)는 호스트(11)로부터 어드레스 맵핑 정보를 포함하는 응답을 수신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 호스트(11)로부터 변환 완료를 수신할 수 있다. 변환 완료는 변환 상태 정보 및 변환된 어드레스를 포함할 수 있다. 변환 완료는 변환 요청에 포함된 물리 어드레스(PA)에 대응하는 논리 어드레스(LA)를 포함할 수 있다. 변환 상태 정보는 '성공', '실패', '에러', 또는 '지원되지 않는 요청' 등을 가리킬 수 있다.
S150 단계에서, 스토리지 장치(100)는 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. 예들 들어, 스토리지 컨트롤러(110)는 호스트(11)로부터 제공된 변환 완료를 기반으로 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. 스토리지 컨트롤러(110)는 물리 어드레스(PA)와 관련하여 대응하는 논리 어드레스(LA)를 어드레스 변환 테이블 캐시(ATTC)에 저장할 수 있다.
S160 단계에서, 스토리지 장치(100)는 제2 어드레스 변환 동작을 수행할 수 있다. 예들 들어, 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여 제2 어드레스 변환 동작을 수행할 수 있다. 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)를 기반으로 제2 타입의 요청(T2RQ)에 포함된 물리 어드레스(PA)를 논리 어드레스(LA)로 변환할 수 있다.
S170 단계에서, 스토리지 장치(100)는 제1 어드레스 변환 동작을 수행할 수 있다. 예들 들어, 스토리지 컨트롤러(110)는 맵핑 테이블(MT)을 참조하여 제1 어드레스 변환 동작을 수행할 수 있다. 스토리지 컨트롤러(110)는 맵핑 테이블(MT)을 기반으로 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다.
S180 단계에서, 스토리지 장치(100)는 입출력 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)의 물리 페이지 어드레스(PPA)에 저장된 데이터를 호스트(11)로 제공하거나, 불휘발성 메모리 장치(120)의 물리 페이지 어드레스(PPA)에 데이터를 저장할 수 있다. 즉, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 물리 페이지 어드레스(PPA) 및 제2 타입의 요청(T2RQ)에 대응하는 커맨드를 전송할 수 있다.
도 5는 도 4의 S140 단계 및 S150 단계를 좀 더 구체적으로 보여주는 순서도이다. 도 1, 도 4, 및 도 5를 참조하면, S141 단계에서, 스토리지 장치(100)는 변환 상태 정보가 '성공'인지 여부를 판별할 수 있다. 변환 상태 정보가 '성공'인 경우 스토리지 장치(100)는 S150 단계를 수행하고, 변환 상태 정보가 '성공'이 아닌 경우, 스토리지 장치(100)는 S190 단계를 수행할 수 있다.
S150 단계에서, 스토리지 장치(100)는 변환 완료를 기반으로 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. S150 단계를 S151 단계 및 S152 단계를 포함할 수 있다. S151 단계에서, 스토리지 장치(100)는 희생 엔트리(victim entry)를 선택할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)의 복수의 엔트리들 중 하나의 희생 엔트리를 선택할 수 있다. 스토리지 컨트롤러(110)는 가장 적게 사용된 엔트리를 선택하는 방식(LRU, Least Recently Used), 가장 최근에 사용된 엔트리를 선택하는 방식(MRU, Most Recently Used), 가장 먼저 저장된 엔트리를 선택하는 방식(FIFO, First In First Out) 등에 의하여 희생 엔트리를 선택할 수 있다. 예를 들어 어드레스 변환 테이블 캐시(ATTC)의 복수의 엔트리들 각각은 물리 어드레스(PA), 논리 어드레스(LA), 유효 비트, 더티(dirty) 비트, 및 태그 등을 포함할 수 있다.
S152 단계에서, 스토리지 장치(100)는 새로운 어드레스 맵핑 정보를 희생 엔트리에 저장하거나 덮어쓸 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 물리 어드레스(PA)와 관련하여 논리 어드레스(LA)를 어드레스 변환 테이블 캐시(ATTC)의 희생 엔트리에 저장할 수 있다.
S190 단계에서, 스토리지 장치(100)는 변환 상태 정보를 기반으로 수신된 요청을 어드레스 변환 실패로 판정하고, 어드레스 변환 실패에 대한 정보를 포함하는 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 변환 상태 정보가 '성공'을 가리키지 아니하므로, 물리 어드레스(PA)에 대응하는 논리 어드레스(LA)를 알 수 없다. 제2 타입의 요청(T2RQ)에 포함된 물리 어드레스(PA)가 스토리지 장치(100)에 의해 접근 불가능한 경우, 변환 상태 정보는 '실패'를 가리킬 수 있다. 스토리지 컨트롤러(110)는 변환 상태 정보를 기반으로 제2 타입의 요청(T2RQ)을 어드레스 변환 실패로 판정하고, 어드레스 변환 실패에 관한 정보를 포함하는 응답을 호스트(11)로 전송할 수 있다.
도 6a 내지 도 6e는 도 1의 스토리지 시스템의 동작을 설명하기 위한 도면이다. 이하에서, 편의를 위하여, 스토리지 시스템(10)의 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 도 6a 내지 도 6e에서, 맵핑 테이블(MT) 및 어드레스 변환 테이블 캐시(ATTC)는 버퍼 메모리(115)에 저장되는 것으로 도시된다. 그러나, 본 개시의 실시 예를 용이하게 설명하기 위한 단순한 예시들이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 맵핑 테이블(MT) 및 어드레스 변환 테이블 캐시(ATTC)는 SRAM, DRAM, 또는 불휘발성 메모리 장치(120) 등에 저장될 수 있다.
도 1 및 도 6a를 참조하면, 호스트 컨트롤러(12)에서 운영 체제(OS)가 실행될 수 있다. 또한, 운영 체제(OS)의 지원을 바탕으로, 호스트 컨트롤러(12)에서 애플리케이션 계층(APP)(이하에서, “애플리케이션”으로 칭함)이 실행될 수 있다. 운영 체제(OS)는 페이지 부재 처리기(PFH; page fault handling)를 포함할 수 있다. 페이지 부재 처리기는 애플리케이션(APP)이 호스트 메모리(13)를 액세스할 때에 발생하는 패이지 부재(page fault)를 처리할 수 있다. 복수의 애플리케이션(APP)들 각각은 전용의 가상 메모리 공간들(private virtual memory spaces)을 가질 수 있으며, 다수의 태스크들(multiple tasks)이 실행할 수 있다. 운영 체제(OS)는 애플리케이션의 실행에 따른 프로세스의 가상 어드레스 공간을 물리 어드레스 공간으로 매핑할 수 있다. 운영 체제(OS)는 매핑을 관리함으로써 하드웨어에 탑재된 메모리의 한정된 용량을 효율적으로 사용할 수 있다.
일 실시 예에서, 호스트 컨트롤러(12)는 호스트 메모리(13)의 저장 공간을 식별할 수 있다. 호스트 메모리(13)의 저장 공간은 제1 저장 영역(SA1)으로 도시된다. 호스트 컨트롤러(12)는 물리 어드레스(PA)를 기반으로 호스트 메모리(13)의 제1 저장 영역(SA1)에 액세스할 수 있다.
호스트 컨트롤러(12)(예를 들어, 메모리 관리 유닛(MMU; Memory Management Unit))는 가상 어드레스(VA)를 호스트 메모리(13)의 실제 어드레스 또는 물리 어드레스(PA; physical address)로 변환할 수 있다. 호스트 컨트롤러(12)는 애플리케이션(APP)들이 실행됨에 따라 사용되는 가상 어드레스(VA)를 물리 어드레스(PA)로 변환할 수 있다. 호스트 컨트롤러(12)는 페이지 테이블(PT)을 참조하여 가상 어드레스(VA)를 물리 어드레스(PA)로 변환할 수 있다.
호스트 컨트롤러(12)는 가상 어드레스(VA)와 물리 어드레스(PA) 간의 어드레스 변환 정보(예를 들어, 변환 테이블, 또는 페이지 테이블(PT))을 관리할 수 있다. 예를 들어, 페이지 테이블(PT)을 가상 어드레스(VA)와 물리 어드레스(PA) 간의 맵핑을 저장하는 데이터 구조이다. 호스트 컨트롤러(12)는 가상 어드레스(VA) 및 물리 어드레스(PA)의 맵핑 정보(또는, 사상 정보)를 페이지 테이블(PT)로서 호스트 메모리(13)의 제1 저장 영역(SA1)에 저장할 수 있다. 페이지 테이블(PT)의 복수의 엔트리들 각각은 가상 어드레스(VA), 물리 어드레스(PA), 및 유효 비트(V)를 포함할 수 있다. 유효 비트(V)는 해당 엔트리가 유효한지 여부를 나타내는 비트일 수 있다. 유효 비트(V)가 비활성화 상태를 가리키는 제1 논리 값(예를 들어, '0')인 경우 대응하는 엔트리가 유효 하지 않음을 나타내고, 유효 비트(V)가 활성화 상태를 가리키는 제2 논리 값(예를 들어, '1')인 경우 대응하는 엔트리가 유효함을 나타낼 수 있다.
스토리지 장치(100)는 불휘발성 메모리 장치(120)의 용량 중에서 초과 제공 영역의 용량을 제외한 사용자 영역의 용량을 호스트(11)에 노출할 수 있다. 예를 들어, 초과 제공 영역의 용량은 스토리지 컨트롤러(110)가 읽기 리클레임(read reclaim), 마모도 관리(wear leveling), 가비지 컬렉션(garbage collection)과 같은 다양한 배경 동작들을 수행하기 위해 사용될 수 있다. 또한, 초과 제공 영역의 용량은 사용자 영역의 용량에 기입된 데이터의 갱신 데이터를 기입하는 데에 사용될 수 있다. 즉, 초과 제공 영역의 용량은 쓰기-전-소거(erase-before-write) 특정으로 인해 스토리지 장치(100)의 레이턴시가 증가하고 수명이 감소하는 것을 방지하기 위해 사용될 수 있다.
호스트(11)는 스토리지 장치(100)의 사용자 영역의 용량을 논리 어드레스(LA)가 할당되는 영역의 일부로 식별할 수 있다. 호스트(11)는 스토리지 장치(100)의 사용자 영역의 용량에 논리 어드레스(LA)를 할당하고, 논리 어드레스(LA)를 이용하여 사용자 영역의 용량에 액세스할 수 있다. 즉, 호스트(11)는 논리 어드레스(LA)를 기반으로 스토리지 장치(100)의 사용자 영역에 액세스할 수 있다. 또는 호스트(11)는 스토리지 장치(100)의 사용자 영역의 용량에 물리 어드레스(PA)를 할당하고, 물리 어드레스(PA)를 이용하여 사용자 영역의 용량에 액세스할 수 있다. 즉, 호스트(11)는 물리 어드레스(PA)를 기반으로 스토리지 장치(100)의 사용자 영역의 용량에 액세스할 수 있다.
예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)의 저장 공간을 식별할 수 있다. 스토리지 장치(100)의 저장 공간은 제2 저장 영역(SA2)으로 도시된다. 예를 들어, 제2 저장 영역(SA2)은 스토리지 장치(100)의 사용자 영역 및 초과 제공 영역을 포함할 수 있다. 스토리지 컨트롤러(110)는 물리 페이지 어드레스(PPA)를 기반으로 불휘발성 메모리 장치(120)에 액세스할 수 있다. 즉, 스토리지 컨트롤러(110)는 물리 페이지 어드레스(PPA)를 기반으로 불휘발성 메모리 장치(120)의 제2 저장 영역(SA2)에 액세스할 수 있다.
스토리지 컨트롤러(110)는 맵핑 테이블(MT) 및 어드레스 변환 테이블 캐시(ATTC)를 관리할 수 있다. 맵핑 테이블(MT)은 논리 어드레스(LA) 및 물리 페이지 어드레스(PPA) 간의 맵핑을 저장하는 데이터 구조이다. 어드레스 변환 테이블 캐시(ATTC)는 물리 어드레스(PA) 및 논리 어드레스(LA) 간의 맵핑을 저장하는 데이터 구조이다. FTL(112)은 맵핑 테이블(MT)을 참조하여 논리 어드레스(LA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다. 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여, 물리 어드레스(PA)를 물리 페이지 어드레스(PPA)로 변환할 수 있다.
이하의 도면에서, 도면의 간결성 및 설명의 편의를 위하여, 제1 데이터(D1)는 제1 저장 영역(SA1)에 저장될 수 있다. 제1 데이터(D1)는 제1 물리 어드레스(PA1)와 대응할 수 있다. 제1 내지 제5 데이터(D1~D5)는 제2 저장 영역(SA2)에 저장될 수 있다. 제1 물리 페이지 어드레스(PPA1)는 제1 데이터(D1)와 대응하고, 제2 물리 페이지 어드레스(PPA2)는 제2 데이터(D2)와 대응하고, 제3 물리 페이지 어드레스(PPA3)는 제3 데이터(D3)와 대응하고, 제4 물리 페이지 어드레스(PPA4)는 제4 데이터(D4)와 대응하고, 제5 물리 페이지 어드레스(PPA5)는 제5 데이터(D5)와 대응할 수 있다.
맵핑 테이블(MT)은 제1 내지 제5 논리 어드레스(LA1~LA5)에 대한 맵핑 정보를 포함할 수 있다. 제1 논리 어드레스(LA1)는 제2 물리 페이지 어드레스(PPA2)와 대응하고, 제2 논리 어드레스(LA2)는 제4 물리 페이지 어드레스(PPA4)와 대응하고, 제3 논리 어드레스(LA3)는 제5 물리 페이지 어드레스(PPA5)와 대응하고, 제4 논리 어드레스(LA4)는 제1 물리 페이지 어드레스(PPA1)와 대응하고, 제5 논리 어드레스(LA5)는 제3 물리 페이지 어드레스(PPA5)와 대응할 수 있다.
어드레스 변환 테이블 캐시(ATTC)는 복수의 물리 어드레스들(PA10001, PA10002)에 대한 맵핑 정보를 포함할 수 있다. 물리 어드레스(PA10001)는 제2 논리 어드레스(LA2)와 대응하고, 물리 어드레스(PA10002)는 제3 논리 어드레스(LA3)와 대응할 수 있다.
페이지 테이블(PT)은 제1 내지 제5 가상 어드레스들(VA1~VA5)에 대한 맵핑 정보를 포함할 수 있다. 제1 가상 어드레스(VA1)는 제1 물리 어드레스(PA1)와 대응하고, 제1 가상 어드레스(VA1)와 대응하는 유효 비트(V)는 제2 논리 값(예를 들어, '1')을 가리킬 수 있다. 제2 가상 어드레스(VA2)와 대응하는 유효 비트(V)는 제1 논리 값(예를 들어, '0')을 가리킬 수 있다. 제3 가상 어드레스(VA3)는 물리 어드레스(PA10001)와 대응하고, 제3 가상 어드레스(VA3)와 대응하는 유효 비트(V)는 제2 논리 값(예를 들어, '1')을 가리킬 수 있다. 제4 가상 어드레스(VA4)는 물리 어드레스(PA10002)와 대응하고, 제4 가상 어드레스(VA4)와 대응하는 유효 비트(V)는 제2 논리 값(예를 들어, '1')을 가리킬 수 있다. 제5 가상 어드레스(VA5)는 물리 어드레스(PA10003)와 대응하고, 제5 가상 어드레스(VA5)와 대응하는 유효 비트(V)는 제2 논리 값(예를 들어, '1')을 가리킬 수 있다. 그러나, 이는 본 개시의 실시 예를 용이하게 설명하기 위한 단순한 예시들이며, 본 개시의 범위가 이에 한정되는 것은 아니다.
S201 단계에서, 호스트 컨트롤러(12)는 제3 데이터(D3)를 위해, 제2 가상 어드레스(VS2)에 대한 액세스를 지시할 수 있다. 호스트 컨트롤러(12)는 페이지 테이블(PT)을 검색할 수 있다. 가상 어드레스(VA)의 유효한 맵핑 정보가 페이지 테이블(PT) 내에 존재하지 않는다면, 페이지 부재(page fault)가 발생할 수 있다. 제2 가상 어드레스(VS2)의 유효 비트(V)가 제1 논리 값(예를 들어, '0')을 가리키므로, S202 단계에서 페이지 부재가 발생할 수 있다. 즉, 제2 가상 어드레스(VS2)에 대응하는 유효한 물리 어드레스가 존재하지 아니하므로, 페이지 부재가 발생할 수 있다.
예를 들어, 애플리케이션이 새로운 메모리의 할당을 요청하면, 운영 체제(OS)는 메모리의 할당을 위해 메모리 액세스를 지시할 수 있다. 이전에 사용되지 않은 새로운 메모리의 할당이 요청되었으므로, 맵핑 정보는 페이지 테이블(PT)에 존재하지 않을 수 있다. 즉, 새로운 메모리의 할당이 수행될 때, 페이지 부재가 발생할 수 있다.
페이지 부재가 발생하면, 애플리케이션으로부터 운영 체제(OS)로 문맥 교환(context switching)이 수행될 수 있다. 운영 체제(OS)의 페이지 부재 처리기(PFH)는 부재 처리(fault handling)를 수행할 수 있다. 예를 들어, 페이지 부재 처리기(PFH)는 애플리케이션이 요청한 제2 가상 어드레스(VA2)에 호스트 메모리(13)의 제2 물리 어드레스(PA2)를 맵핑할 수 있다. 예를 들어, 호스트 메모리(13)의 자유 용량이 부족하면, 호스트 컨트롤러(12)는 호스트 메모리(13)의 제1 저장 영역(SA1)에 저장된 데이터의 일부를 스토리지 장치(100)로 스왑(swap)하고, 스왑된 데이터의 저장 공간을 해제(release)함으로써 제1 저장 영역(SA1)의 자유 용량을 확보할 수 있다.
S203 단계에서, 호스트 컨트롤러(12)는 스토리지 장치(100)로 제5 논리 어드레스(LA5)를 포함하는 읽기 요청을 전송할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 스토리지 장치(100)로 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)(예를 들어, 제1 타입의 읽기 요청)을 전송할 수 있다. 제5 논리 어드레스(LA5)는 제3 데이터(D3)에 대응하는 논리 어드레스일 수 있다.
스토리지 장치(100)는 제1 타입의 요청(T1RQ)에 응답하여, 맵핑 테이블(MT)을 참조하여, 제5 논리 어드레스(LA5)를 제3 물리 페이지 어드레스(PPA3)로 변환할 수 있다. 스토리지 장치(100)는 제3 물리 페이지 어드레스(PPA3)를 기반으로 불휘발성 메모리 장치(120)에서 제3 데이터(D3)를 읽을 수 있다.
도 6b를 참조하면, S204 단계에서, 스토리지 장치(100)는 제3 데이터(D3)를 호스트 메모리(13)의 제2 물리 어드레스(PA2)에 기입할 수 있다. 제1 타입의 요청(T1RQ)에 대응하는 데이터이므로, 스토리지 장치(100)는 블록 단위 또는 페이지 단위로 데이터를 호스트(11)로 전송할 수 있다. 스토리지 장치(100)는 제1 타입의 요청(T1RQ)에 대한 완료 엔트리를 호스트(11)로 전송할 수 있다.
S205 단계에서, 호스트 컨트롤러(12)는 페이지 테이블(PT)을 갱신할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 페이지 테이블(PT)에 제2 가상 어드레스(VA2) 및 제2 물리 어드레스(PA2)의 맵핑 정보를 기입함으로써 페이지 테이블을 갱신할 수 있다. 부재 처리가 완료된 후에 페이지 부재 처리기(PFH)로부터 애플리케이션으로 문맥 교환(context switching)이 수행될 수 있다.
도 6c를 참조하면, S206 단계에서, 호스트 컨트롤러(12)는 제4 데이터(D4)의 일부를 위해, 제3 가상 어드레스(VA3)에 대한 액세스를 지시할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 블록 단위 또는 페이지 단위보다 작은 단위(예를 들어, 바이트 단위 또는 캐시 라인 단위)의 데이터를 요구할 수 있다.
호스트 컨트롤러(12)는 페이지 테이블(PT)을 참조하여 어드레스 변환 동작을 수행할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 제3 가상 어드레스(VA3)에 대응하는 유효 비트(V)가 제2 논리 값(예를 들어, '1')을 가리키므로, 제3 가상 어드레스(VA3)에 대응하는 물리 어드레스를 변환할 수 있다. 즉, 호스트 컨트롤러(12)는 제3 가상 어드레스(VA3)를 물리 어드레스(PA10001)로 변환할 수 있다.
S207 단계에서, 호스트 컨트롤러(12)는 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)을 스토리지 장치(100)로 전송할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 물리 어드레스(PA10001)를 포함하는 제2 타입의 읽기 요청을 스토리지 장치(100)로 전송할 수 있다. 제2 타입의 읽기 요청은 블록 단위 또는 페이지 단위 보다 작은 크기를 가리키는 데이터 크기를 포함할 수 있다. 호스트 컨트롤러(12)는 물리 어드레스(PA10001)가 호스트 메모리(13)의 제1 저장 영역(SA1)을 가리키지 않고, 스토리지 장치(100)의 사용자 영역을 가리키므로, 읽기 요청을 스토리지 장치(100)로 전송할 수 있다.
스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에 응답하여, 제2 어드레스 변환 동작을 수행할 수 있다. 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에서 물리 어드레스(PA10001)를 판별할 수 있다. 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여, 물리 어드레스(PA10001)에 대한 맵핑 정보가 존재하는지 판별할 수 있다. 어드레스 변환 테이블 캐시(ATTC)에 물리 어드레스(PA10001)에 대한 맵핑 정보가 존재하므로(캐시 히트), 스토리지 컨트롤러(110)는 물리 어드레스(PA10001)를 논리 어드레스(LA2)로 변환할 수 있다. 스토리지 컨트롤러(110)는 맵핑 테이블(MT)을 참조하여, 제2 논리 어드레스(LA2)를 제4 물리 페이지 어드레스(PPA4)로 변환할 수 있다. 스토리지 컨트롤러(110)는 제4 물리 페이지 어드레스(PPA4)를 기반으로 불휘발성 메모리 장치(120)로부터 제4 데이터(D4)를 읽을 수 있다.
S208 단계에서, 스토리지 컨트롤러(110)는 제2 타입의 읽기 요청에 대응하는 제4 데이터(D4)의 일부 및 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 제2 타입의 읽기 요청에 포함된 데이터의 크기(예를 들어, 블록 단위 또는 페이지 단위 보다 작음)에 대응하는 제4 데이터(D4)의 일부를 호스트(11)로 전송할 수 있다.
도 6d를 참조하면, S209 단계에서, 제2 데이터(D2)의 일부를 위해, 제5 가상 어드레스(VA5)에 대한 액세스를 지시할 수 있다. 호스트 컨트롤러(12)는 페이지 테이블(PT)을 참조하여, 제5 가상 어드레스(VA5)를 물리 어드레스(PA10003)으로 변환할 수 있다. S210 단계에서, 호스트 컨트롤러(12)는 물리 어드레스(PA10003)를 포함하는 제2 타입의 요청(T2RQ)(예를 들어, 제2 타입의 읽기 요청)을 스토리지 장치(100)로 전송할 수 있다. 제2 타입의 읽기 요청은 블록 단위 또는 페이지 단위 보다 작은 크기를 가리키는 데이터 크기를 포함할 수 있다.
스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에서 물리 어드레스(PA10003)를 판별할 수 있다. 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여, 물리 어드레스(PA10003)에 대한 맵핑 정보가 존재하는지 판별할 수 있다. 어드레스 변환 테이블 캐시(ATTC)에 물리 어드레스(PA10003)에 대한 맵핑 정보가 존재하지 않으므로(캐시 미스), S211 단계에서, 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에 응답하여, 물리 어드레스(PA10003)를 포함하는 변환 요청을 호스트(11)로 전송할 수 있다.
호스트 컨트롤러(12)는 변환 요청에 응답하여, 어드레스 변환 동작을 수행할 수 있다. 즉, 호스트 컨트롤러(12)는 물리 어드레스(PA10003)를 제1 논리 어드레스(LA1)로 변환할 수 있다. 도 6e를 참조하면, S212 단계에서, 호스트 컨트롤러(12)는 변환 요청에 대응하는 응답을 스토리지 장치(100)로 전송할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 제1 논리 어드레스(LA1)를 포함하는 변환 완료를 스토리지 장치(100)로 전송할 수 있다.
스토리지 장치(100)는 제1 논리 어드레스(LA1)를 포함하는 변환 완료를 수신할 수 있다. 스토리지 장치(100)는 변환 완료에 응답하여, 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)내에 물리 어드레스(PA10003)와 관련하여 제1 논리 어드레스(LA1)를 저장할 수 있다.
스토리지 컨트롤러(110)는 어드레스 변환 테이블 캐시(ATTC)를 기반으로 제2 어드레스 변환 동작을 수행할 수 있다. 즉, 스토리지 컨트롤러(110)는 물리 어드레스(PA10003)를 제1 논리 어드레스(LA1)로 변환할 수 있다. 스토리지 컨트롤러(110)는 맵핑 테이블(MT)을 기반으로 제1 어드레스 변환 동작을 수행할 수 있다. 즉, 스토리지 컨트롤러(110)는 제1 논리 어드레스(LA1)를 제2 물리 페이지 어드레스(PPA2)로 변환할 수 있다. 스토리지 컨트롤러(110)는 제2 물리 페이지 어드레스(PPA2)를 기반으로 불휘발성 메모리 장치(120)에서 제2 데이터(D2)를 읽을 수 있다.
S213 단계에서, 스토리지 장치(100)는 제2 타입의 요청(T2RQ)에 대응하는 제2 데이터(D2)의 일부 및 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 제2 타입의 요청(T2RQ)에 포함된 데이터 크기(예를 들어, 블록 단위 또는 페이지 단위 보다 작음)에 대응하는 제2 데이터(D2)의 일부를 호스트(11)로 전송할 수 있다.
상술된 바와 같이, 스토리지 장치(100)는 논리 어드레스(LA)를 기반으로 블록 단위 또는 페이지 단위의 데이터를 제공할 수 있고, 물리 어드레스(PA)를 기반으로 블록 단위 또는 페이지 단위보다 작은 단위(예를 들어, 바이트 단위 또는 캐시 라인 단위)의 데이터를 제공할 수 있다. 상술된 실시 예들은 읽기 요청을 기준으로 설명되었으나, 본 개시의 범위가 이에 한정되는 것은 아니며, 쓰기 요청에 대해 스토리지 시스템은 이와 동일 또는 유사하게 동작할 수 있다.
도 7a 내지 도 7c는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다. 도 1 및 도 7a을 참조하면, S310 단계에서, 호스트(11)는 페이지 테이블(PT)을 갱신할 수 있다. 예를 들어, 물리 어드레스(PA10001)에 대응하는 논리 어드레스가 변경될 수 있다. 또는 물리 어드레스(PA10001)에 대응하는 논리 어드레스가 유효하지 않을 수 있다.
S320 단계에서, 호스트(11)는 스토리지 장치(100)로 무효화 요청(invalidation request)을 전송할 수 있다. 예를 들어, 무효화 요청은 무효화될 어드레스를 포함할 수 있다. 즉, 무효화 요청은 물리 어드레스(PA10001)를 포함할 수 있다. 스토리지 장치(100)의 어드레스 변환 테이블 캐시(ATTC) 내의 물리 어드레스(PA10001)에 대응하는 맵핑 정보를 제거 또는 플러시(flush)하기 위하여, 호스트(11)는 물리 어드레스(PA10001)를 포함하는 무효화 요청을 전송할 수 있다.
일 실시 예에서, 호스트(11)는 PCIe의 어드레스 변환 서비스(ATS; Address Translation Services)를 이용하여, 맵핑 정보에 대한 폐기 또는 무효화 요청을 전송할 수 있다. 호스트(11)는 ATS의 무효화 요청(invalidation requests)을 통해 맵핑 정보에 대한 무효화 요청을 전송할 수 있다. 또는 호스트(11)는 CXL(Compute eXpress Link)TM 프로토콜(예를 들어, CXL.cache)을 이용하여 무효화 요청을 전송할 수 있다. 단, 본 개시의 범위가 이에 한정되는 것은 아니다.
S330 단계에서, 스토리지 장치(100)는 어드레스 변환 테이블 캐시(ATTC)에 대한 무효화 동작을 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(11)로부터 무효화 요청을 수신할 수 있다. 스토리지 장치(100)는 무효화 요청을 기반으로 어드레스 변환 테이블 캐시(ATTC)에 대한 무효화 동작을 수행할 수 있다. 스토리지 장치(100)는 무효화 요청에 포함된 물리 어드레스(PA10001)에 대응하는 맵핑 정보를 제거할 수 있다. 또는 스토리지 장치(100)는 물리 어드레스(PA10001)에 대응하는 유효 비트(V)를 비활성화 상태(예를 들어, 제1 논리 값('0'))를 가리키도록 설정할 수 있다.
S340 단계에서, 스토리지 장치(100)는 호스트(11)로 무효화 요청에 대응하는 응답을 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(11)로 물리 어드레스(PA10001)에 대한 무효화 완료 정보를 전송할 수 있다.
상술된 바와 같이, 호스트(11)는 한 개의 무효화 요청을 통해 한 개의 맵핑 정보에 대한 무효화를 지시할 수 있다. 즉, 무효화 요청은 스토리지 장치(100)의 어드레스 변환 테이블 캐시(ATTC)에서 무효화될 한 개의 물리 어드레스(PA)를 포함할 수 있다. 스토리지 장치(100)는 한 개의 무효화 요청을 기반으로 한 개의 물리 어드레스에 대응하는 맵핑 정보를 무효화시킬 수 있다. 스토리지 장치(100)는 무효화된 맵핑 정보에 대한 완료 정보를 한 개의 응답으로 호스트(11)로 전송할 수 있다.
일 실시 예에서, 도 7b를 참조하면, 스토리지 장치(100)는 한 개의 응답을 통해, 복수의 무효화 요청들에 대한 완료 정보를 전송할 수 있다. 호스트(11)는 복수의 무효화 요청들을 스토리지 장치(100)로 전송할 수 있다. 스토리지 장치(100)는 복수의 무효화 요청들을 기반으로 복수의 물리 어드레스들에 대응하는 맵핑 정보들을 무효화시킬 수 있다. 스토리지 장치(100)는 무효화된 복수의 맵핑 정보에 대한 완료 정보들을 한 개의 응답으로 호스트(11)로 전송할 수 있다.
S410 단계에서, 호스트(11)는 페이지 테이블(PT)을 갱신할 수 있다. 예를 들어, 호스트(11)는 물리 어드레스(PA10001)에 대응하는 논리 어드레스, 물리 어드레스(PA10002)에 대응하는 논리 어드레스, 및 물리 어드레스(PA10003)에 대응하는 논리 어드레스를 갱신할 수 있다.
S420 단계에서, 호스트(11)는 물리 어드레스(PA10001)를 포함하는 무효화 요청을 스토리지 장치(100)로 전송할 수 있다. S430 단계에서, 스토리지 장치(100)는 무효화 요청에 응답하여, 어드레스 변환 테이블 캐시(ATTC)에서 물리 어드레스(PA10001)에 대응하는 맵핑 정보에 대한 무효화 동작을 수행할 수 있다. S440 단계에서, 호스트(11)는 물리 어드레스(PA10002)를 포함하는 무효화 요청을 스토리지 장치(100)로 전송할 수 있다. S450 단계에서, 스토리지 장치(100)는 무효화 요청에 응답하여, 어드레스 변환 테이블 캐시(ATTC)에서 물리 어드레스(PA10002)에 대응하는 맵핑 정보에 대한 무효화 동작을 수행할 수 있다. S460 단계에서, 호스트(11)는 물리 어드레스(PA10003)를 포함하는 무효화 요청을 스토리지 장치(100)로 전송할 수 있다. S470 단계에서, 스토리지 장치(100)는 무효화 요청에 응답하여, 어드레스 변환 테이블 캐시(ATTC)에서 물리 어드레스(PA10003)에 대응하는 맵핑 정보에 대한 무효화 동작을 수행할 수 있다. S
480 단계에서, 스토리지 장치(100)는 호스트(11)로 복수의 물리 어드레스들(PA10001, PA10002, PA10003)에 대한 무효화 완료 정보를 포함하는 응답을 전송할 수 있다.
일 실시 예에서, 도 7c를 참조하면, 호스트(11)는 한 개의 무효화 요청을 통해 복수의 맵핑 정보들에 대한 무효화를 지시할 수 있다. 즉, 무효화 요청은 스토리지 장치(100)의 어드레스 변환 테이블 캐시(ATTC)에서 무효화될 복수의 물리 어드레스들을 포함할 수 있다. 스토리지 장치(100)는 한 개의 무효화 요청을 기반으로, 복수의 물리 어드레스들에 대응하는 맵핑 정보들을 무효화 시킬 수 있다. 스토리지 장치(100)는 무효화된 복수의 맵핑 정보에 대한 완료 정보를 한 개의 응답으로 호스트(11)로 전송할 수 있다.
S510 단계에서, 호스트(11)는 페이지 테이블(PT)을 갱신할 수 있다. 예를 들어, 호스트(11)는 물리 어드레스(PA10001)에 대응하는 논리 어드레스, 물리 어드레스(PA10002)에 대응하는 논리 어드레스, 및 물리 어드레스(PA10003)에 대응하는 논리 어드레스를 갱신할 수 있다.
S520 단계에서, 호스트(11)는 복수의 물리 어드레스들(PA10001, PA10002, PA10003)을 포함하는 무효화 요청을 스토리지 장치(100)로 전송할 수 있다. S530 단계에서, 스토리지 장치(100)는 무효화 요청에 응답하여, 어드레스 변환 테이블 캐시(ATTC)에서 복수의 물리 어드레스들(PA10001, PA10002, PA10003)에 대응하는 맵핑 정보들에 대한 무효화 동작을 수행할 수 있다. S540 단계에서, 스토리지 장치(100)는 호스트(11)로 복수의 물리 어드레스들(PA10001, PA10002, PA10003)에 대한 무효화 완료 정보를 포함하는 응답을 전송할 수 있다.
도 8은 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다. 도 1 및 도 8을 참조하면, 스토리지 장치(100)가 변환 요청을 호스트(11)에게 전송하는 대신에, 호스트(11)로부터 제공된 갱신 요청에 응답하여 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. S610 단계에서, 호스트(11)는 페이지 테이블(PT)을 갱신할 수 있다. 예를 들어, 호스트(11)는 물리 어드레스(PA10001)가 제2 논리 어드레스(LA2)로 맵핑 되도록 갱신하고, 물리 어드레스(PA10002)가 제3 논리 어드레스(LA3)로 맵핑 되도록 갱신하고, 물리 어드레스(PA10003)가 제1 논리 어드레스(LA1)로 맵핑 되도록 갱신할 수 있다.
S620 단계에서, 호스트(11)는 스토리지 장치(100)로 갱신 요청(update request)을 전송할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)의 어드레스 변환 테이블 캐시(ATTC)에서 복수의 물리 어드레스들(PA10001, PA10002, PA10003)에 대한 맵핑 정보들이 갱신되도록 갱신 요청을 전송할 수 있다. 갱신 요청은 복수의 물리 어드레스들(PA10001, PA10002, PA10003) 및 복수의 물리 어드레스들(PA10001, PA10002, PA10003) 각각에 대응하는 맵핑 정보들(예를 들어, PA10001-LA2, PA10002-LA3, PA10003-LA1)을 포함할 수 있다.
S630 단계에서, 스토리지 장치(100)는 갱신 요청에 응답하여, 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. S631 단계에서, 스토리지 장치(100)는 희생 엔트리들을 선택할 수 있다. S632 단계에서, 스토리지 장치(100)는 새로운 어드레스 맵핑 정보를 희생 엔트리들에 저장하거나 덮어쓸 수 있다. S631 단계 및 S632 단계의 동작들은 도5의 S151 단계 및 S152 단계들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S640 단계에서, 스토리지 장치(100)는 갱신 요청에 대응하는 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 갱신 상태 정보를 포함하는 응답을 호스트(11)로 전송할 수 있다.
도 9a 및 도 9b는 도 1의 스토리지 시스템의 동작의 예를 보여주는 도면들이다. 도 1, 도 6a 내지 도 6e, 도 9a, 및 도 9b를 참조하면, S701 단계에서, 호스트(11)는 스토리지 장치(100)로 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)(예를 들어, 제1 타입의 읽기 요청)을 전송할 수 있다. 예를 들어, 호스트 컨트롤러(12)는 제1 타입의 읽기 요청을 호스트 메모리(13)의 전송 큐에 큐잉할 수 있다. 스토리지 장치(100)는 호스트 메모리(13)의 전송 큐에서 제1 타입의 읽기 요청을 페치할 수 있다.
S702 단계에서, 스토리지 장치(100)는 제1 어드레스 변환 동작을 수행할 수 있다. 예를 들어, FTL(112)는 제1 타입의 요청(T1RQ)에서 제5 논리 어드레스(LA5)를 판별할 수 있다. FTL(112)는 맵핑 테이블(MT)을 참조하여, 제5 논리 어드레스(LA5)에 대한 제1 어드레스 변환 동작을 수행할 수 있다. 즉, FTL(112)는 제5 논리 어드레스(LA5)를 제3 물리 페이지 어드레스(PPA3)로 변환할 수 있다.
S703 단계에서, 스토리지 장치(100)는 읽기 동작을 수행할 수 있다. 예를 들어, FTL(112)은 제3 물리 페이지 어드레스(PPA3)를 기반으로 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. FTL(112)은 제3 물리 페이지 어드레스(PPA3)를 포함하는 읽기 커맨드를 불휘발성 메모리 장치(120)로 전송하고, 불휘발성 메모리 장치(120)로부터 제3 물리 페이지 어드레스(PPA3)에 대응하는 제3 데이터(D3)를 수신할 수 있다.
S704 단계에서, 스토리지 장치(100)는 제1 타입의 요청(T1RQ)에 대응하는 데이터 및 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 제1 타입의 요청(T1RQ)에 대응하는 블록 단위 또는 페이지 단위의 데이터를 호스트 메모리(13)에 기입할 수 있다. 스토리지 장치(100)는 제1 타입의 요청(T1RQ)에 대응하는 완료 엔트리를 호스트 메모리(13)에 기입할 수 있다. 스토리지 장치(100)는 호스트(11)로 인터럽트 신호를 전송할 수 있다.
S705 단계에서, 호스트(11)는 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)(예를 들어, 제2 타입의 읽기 요청)을 스토리지 장치(100)로 전송할 수 있다. S706 단계에서, 스토리지 장치(100)는 제2 어드레스 변환 동작을 수행할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)는 제2 타입의 요청(T2RQ)에서 물리 어드레스(PA10001)를 판별할 수 있다. 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여, 물리 어드레스(PA10001)에 대한 제2 어드레스 변환 동작을 수행할 수 있다. 맵핑 캐시 관리자(118)는 물리 어드레스(PA10001)에 대한 맵핑 정보가 어드레스 변환 테이블 캐시(ATTC)에 존재하는지 판별할 수 있다. 맵핑 캐시 관리자(118)는 물리 어드레스(PA10001)에 대한 맵핑 정보가 어드레스 변환 테이블 캐시(ATTC)에 존재하는 경우(즉, 캐시 히트인 경우), 물리 어드레스(PA10001)에 대한 제2 어드레스 변환 동작을 수행할 수 있다. 즉, 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여, 물리 어드레스(PA10001)를 제2 논리 어드레스(LA2)로 변환할 수 있다.
S707 단계에서, 스토리지 장치(100)는 제1 어드레스 변환 동작을 수행할 수 있다. 예를 들어, FTL(112)은 맵핑 캐시 관리자(118)로부터 제2 논리 어드레스(LA2)를 수신할 수 있다. FTL(112)은 맵핑 테이블(MT)을 참조하여, 제2 논리 어드레스(LA2)에 대한 제1 어드레스 변환 동작을 수행할 수 있다. FTL(112)은 제2 논리 어드레스(LA2)를 제4 물리 페이지 어드레스(PPA4)로 변환할 수 있다.
S708 단계에서, 스토리지 장치(100)는 읽기 동작을 수행할 수 있다. 예를 들어, FTL(112)은 제4 물리 페이지 어드레스(PPA4)를 기반으로 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. S709 단계에서, 스토리지 장치(100)는 제2 타입의 요청(T2RQ)에 대응하는 데이터 및 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 제2 타입의 요청(T2RQ)에 대응하는 블록 단위 또는 페이지 단위보다 작은 크기의 데이터를 호스트(11)로 전송할 수 있다.
S710 단계에서, 호스트(11)는 물리 어드레스(PA10003)를 포함하는 제2 타입의 요청(T2RQ)(예를 들어, 제2 타입의 읽기 요청)을 스토리지 장치(100)로 전송할 수 있다. S711 단계에서, 스토리지 장치(100)는 호스트(11)로 변환 요청을 전송할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)는 제2 타입의 요청(T2RQ)에서 물리 어드레스(PA10003)를 판별할 수 있다. 맵핑 캐시 관리자(118)는 물리 어드레스(PA10003)에 대한 맵핑 정보가 어드레스 변환 테이블 캐시(ATTC)에 존재하는지 판별할 수 있다. 맵핑 캐시 관리자(118)는 물리 어드레스(PA10003)에 대한 맵핑 정보가 어드레스 변환 테이블 캐시(ATTC)에 존재하지 않는 경우(즉, 캐시 미스인 경우), 물리 어드레스(PA10003)를 포함하는 변환 요청을 호스트(11)로 전공할 수 있다.
S712 단계에서, 호스트(11)는 스토리지 장치(100)로 어드레스 맵핑 정보를 포함하는 응답을 전송할 수 있다. 예를 들어, 호스트(11)는 변환 요청에 응답하여, 페이지 테이블(PT)을 참조하여 어드레스 변환 동작을 수행할 수 있다. 다시 말해서, 호스트(11)는 변화 요청에서 물리 어드레스(PA10003)를 판별하고, 물리 어드레스(PA10003)에 대한 어드레스 변환 동작을 수행할 수 있다. 호스트(11)는 물리 어드레스(PA10003)에 대응하는 데이터에 스토리지 장치(100)가 액세스 가능한지 판별할 수 있다. 호스트(11)는 스토리지 장치(100)가 물리 어드레스(PA10003)에 대응하는 데이터에 액세스 가능하다고 판별된 경우, 페이지 테이블(PT)을 참조하여 물리 어드레스(PA10003)를 제1 논리 어드레스(LA1)로 변환할 수 있다. 호스트(11)는 제1 논리 어드레스(LA1)를 포함하는 변환 완료를 스토리지 장치(100)로 전송할 수 있다.
S713 단계에서, 스토리지 장치(100)는 변환 완료를 응답하여 어드레스 변환 테이블 캐시(ATTC)를 갱신할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)는 물리 어드레스(PA10003)에 대한 맵핑 정보를 캐싱할 수 있다. 맵핑 캐시 관리자(118)는 물리 어드레스(PA10003)와 관련하여 제1 논리 어드레스(LA1)를 어드레스 변환 테이블 캐시(ATTC)에 저장할 수 있다.
S714 단계에서, 스토리지 장치(100)는 제2 어드레스 변환 동작을 수행할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)는 어드레스 변환 테이블 캐시(ATTC)를 참조하여, 물리 어드레스(PA10003)에 대한 제2 어드레스 변환 동작을 수행할 수 있다. 맵핑 캐시 관리자(118)는 물리 어드레스(PA10003)를 제1 논리 어드레스(LA1)로 변환할 수 있다.
S715 단계에서, 스토리지 장치(100)는 제1 어드레스 변환 동작을 수행할 수 있다. 예를 들어, FTL(112)은 맵핑 테이블(MT)을 참조하여, 제1 논리 어드레스(LA1)에 대한 제1 어드레스 변환 동작을 수행할 수 있다. FTL(112)은 제1 논리 어드레스(LA1)를 제2 물리 페이지 어드레스(PPA2)로 변환할 수 있다.
S716 단계에서, 스토리지 장치(100)는 읽기 동작을 수행할 수 있다. 예를 들어, FTL(112)은 제2 물리 페이지 어드레스(PPA2)를 기반으로 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. S717 단계에서, 스토리지 장치(100)는 제2 타입의 읽기 요청에 대응하는 데이터 및 응답을 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 장치(100)는 제2 타입의 요청(T2RQ)에 대응하는 블록 단위 또는 페이지 단위보다 작은 크기의 데이터를 호스트(11)로 전송할 수 있다.
도 10은 도 1의 스토리지 장치의 스케줄링 동작을 설명하기 위한 도면이다. 도 1, 도 6e 및 도 10을 참조하면, 요청 스케줄러(119)는 호스트(11)로부터 수신된 요청들을 스케줄링(또는 오더링(ordering))할 수 있다. 요청들을 스케줄링한 결과를 기반으로, 스토리지 장치(100)는 요청들을 처리할 수 있다.
일 실시 예에서, 본 개시에 따른 스토리지 컨트롤러(110)는 제1 타입의 요청(T1RQ)들 및 제2 타입의 요청(T2RQ)들을 수신할 수 있다. 제1 타입의 요청(T1RQ)은 페이지 단위 또는 블록 단위로 처리되며, 제2 타입의 요청(T2RQ)은 블록 단위 또는 페이지 단위보다 작은 단위로(예를 들어, 바이트 단위 또는 캐시 라인 단위)로 처리될 수 있다. 제1 타입의 요청(T1RQ)의 레이턴시(latency)는 제2 타입의 요청(T2RQ)의 레이턴시 보다 클 수 있다. 수신한 순서대로 요청들을 처리할 경우, 제2 타입의 요청(T2RQ)은 제1 타입의 요청(T1RQ)으로 인하여 레이턴시가 지나치게 증가할 수 있다.
일 실시 예에서, 제1 타입의 요청(T1RQ)은 레이턴시 보다 처리량(throughput)이 중요하고, 제2 타입의 요청(T2RQ)은 처리량 보다 레이턴시가 중요할 수 있다. 이에 따라, 요청 스케줄러(119)는 제1 타입의 요청(T1RQ)은 처리량이 증가하도록, 제2 타입의 요청(T2RQ)은 레이턴시가 짧아지도록 요청들을 스케줄링할 수 있다.
스토리지 컨트롤러(110)는 호스트(11)로부터 제1 시점(t1)에서 제4 논리 어드레스(LA4)를 포함하는 제1 타입의 요청(T1RQ)(예를 들어, 제1 타입의 입출력 요청)을 수신하고, 제2 시점(t2)에서 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)을 수신하고, 제3 시점(t3)에서 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)(예를 들어, 제2 타입의 입출력 요청)을 수신하고, 제4 시점(t4)에서, 물리 어드레스(PA10002)를 포함하는 제2 타입의 요청(T2RQ)을 수신할 수 있다.
스토리지 컨트롤러(110)는 호스트(11)로부터 수신된 순서대로 요청들을 처리하지 않고, 요청들을 스케줄링할 수 있다. 즉, 스토리지 컨트롤러(110)는 수신된 순서와 다르게 요청들을 처리할 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)을 제1 타입의 요청(T1RQ)보다 높은 우선 순위로 설정할 수 있다. 즉 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)을 제1 타입의 요청(T1RQ)보다 먼저 처리할 수 있다. 이에 따라, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 제3 시점(t3)에서, 제4 논리 어드레스(LA4)에 대응하는 제1 물리 페이지 어드레스(PPA1)를 포함하는 입출력 커맨드를 전송하고, 제4 시점(t4)에서, 물리 어드레스(PA10001)에 대응하는 제4 물리 페이지 어드레스(PPA4)를 포함하는 입출력 커맨드를 전송하고, 제5 시점(t5)에서, 물리 어드레스(PA10002)에 대응하는 제5 물리 페이지 어드레스(PPA5)를 포함하는 입출력 커맨드를 전송하고, 제6 시점(t6)에서 제5 논리 어드레스(LA5)에 대응하는 제3 물리 페이지 어드레스(PPA3)를 포함하는 입출력 커맨드를 전송할 수 있다.
즉, 제2 타입의 요청(T2RQ)이 우선 순위가 높으므로, 스토리지 컨트롤러(110)는 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)을 먼저 수신했음에도 불구하고, 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)보다 늦게 수신한 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ), 및 물리 어드레스(PA10002)를 포함하는 제2 타입의 요청(T2RQ)을 먼저 처리할 수 있다.
도 11은 도 1의 스토리지 장치의 스케줄링 동작을 설명하기 위한 도면이다. 도 1 및 도 11을 참조하면, 스토리지 컨트롤러(110)는 요청들의 스케줄링을 위하여, 중단(suspend) 커맨드 및 재개(resume) 커맨드를 불휘발성 메모리 장치(120)로 전송할 수 있다.
스토리지 컨트롤러(110)는 호스트(11)로부터 제1 시점(t1)에서 제4 논리 어드레스(LA4)를 포함하는 제1 타입의 요청(T1RQ)을 수신하고, 제2 시점(t2)에서 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)을 수신하고, 제4 시점(t4)에서 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)을 수신할 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 제3 시점(t3)에서, 제4 논리 어드레스(LA4)에 대응하는 제1 물리 페이지 어드레스(PPA1)를 포함하는 입출력 커맨드를 전송하고, 제5 시점(t5)에서, 제5 논리 어드레스(LA5)에 대응하는 제3 물리 페이지 어드레스(PPA3)를 포함하는 입출력 커맨드를 전송하고, 제6 시점(t6)에서, 제3 물리 페이지 어드레스(PPA3)를 포함하는 중단 커맨드를 전송하고, 제7 시점(t7)에서, 물리 어드레스(PA10001)에 대응하는 제4 물리 페이지 어드레스(PPA4)를 포함하는 입출력 커맨드를 전송하고, 제8 시점(t8)에서, 제3 물리 페이지 어드레스(PPA3)를 포함하는 재개 커맨드를 전송할 수 있다.
제2 타입의 요청(T2RQ)에 대한 우선 순위가 제1 타입의 요청(T1RQ)에 대한 우선 순위보다 높으므로, 스토리지 컨트롤러(110)는 제1 타입의 요청(T1RQ)을 처리하는 도중에 중단하고, 제2 타입의 요청(T2RQ)을 먼저 처리할 수 있다. 즉, 스토리지 컨트롤러(110)는 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ) 처리 중에, 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)을 수신하였으므로, 스토리지 컨트롤러(110)는 제3 물리 페이지 어드레스(PPA3)를 포함하는 중단 커맨드를 불휘발성 메모리 장치(120)로 전송할 수 있다. 불휘발성 메모리 장치(120)는 중단 커맨드에 응답하여 수행 중인 동작을 중단할 수 있다. 이후에, 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)을 먼저 처리하고, 제3 물리 페이지 어드레스(PPA3)를 포함하는 재개 커맨드를 불휘발성 메모리 장치(120)로 전송할 수 있다. 불휘발성 메모리 장치(120)는 재개 커맨드에 응답하여 중단된 동작을 재개할 수 있다.
상술된 바와 같이, 스토리지 장치(100)는 우선 순위가 높은 타입의 요청을 수신한 경우, 현재 처리 중인 요청에 대한 동작을 중단하고, 우선 순위가 높은 타입의 요청을 먼저 처리할 수 있다. 이에 따라 향상된 성능을 갖는 스토리지 장치가 제공된다.
도 12a 내지 도 12d는 도 1의 스토리지 장치의 요청 처리 순서를 설명하기 위한 도면들이다. 도 1 및 도 12a를 참조하면, 스토리지 시스템(10)은 제1 타입의 큐(T1Q) 및 제2 타입의 큐(T2Q)를 관리할 수 있다. 예를 들어, 제1 타입의 큐(T1Q) 및 제2 타입의 큐(T2Q)는 버퍼 메모리(115)에 저장될 수 있다. 제1 타입의 큐(T1Q)는 제1 타입의 요청(T1RQ)들이 큐잉될 수 있다. 제2 타입의 큐(T2Q)는 제2 타입의 요청(T2RQ)들이 큐잉될 수 있다.
스토리지 컨트롤러(110)는 라운드 로빈(RR; round robin) 방식을 기반으로 복수의 큐들(T1Q, T2Q)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리할 수 있다.
도 12b를 참조하면, 스토리지 시스템(10)은 제1 타입의 큐(T1Q) 및 제2 타입의 큐(T2Q)를 관리할 수 있다 스토리지 컨트롤러(110)는 가중된 라운드 로빈(WRR; weighted round robin) 방식을 기반으로 복수의 큐들(T1Q, T2Q)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리할 수 있다. 일 실시 예에서, 복수의 큐들(T1Q, T2Q) 각각은 가중치를 가질 수 있다. 가중치는 긴급(Urgent), 높은 가중치(High Weight), 중간 가중치(Medium Weight), 및 낮은 가중치(Low Weight)를 포함할 수 있다. 예를 들어, 제1 타입의 큐(T1Q)는 낮은 가증치(Low Weight)를 갖도록 설정되고, 제2 타입의 큐(T2Q)는 중간 가중치(Medium Weight)를 갖도록 설정될 수 있다. 복수의 큐들(T1Q, T2Q) 각각의 가중치는 미리 결정될 수 있다. 또는 복수의 큐들(T1Q, T2Q) 각각의 가중치는 호스트(11)에 의해 결정되거나 또는 관리(예를 들어, 동작 중에 가중치 값들이 변경됨)될 수 있다.
도 12c를 참조하면, 스토리지 시스템(10)은 제1 타입의 큐(T1Q)와 제2 타입의 큐(T2Q)를 관리할 수 있다 스토리지 컨트롤러(110)는 우선 순위 방식(Priority) 방식을 기반으로 복수의 큐들(T1Q, T2Q)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제2 타입의 큐(T2Q)에 포함된 요청들을 제1 타입의 큐(T1Q)에 포함된 요청들 보다 우선 처리할 수 있다.
도 12d를 참조하면, 스토리지 시스템(10)은 관리 큐(AQ), 복수의 제1 타입의 큐들(T1Q1, T1Q2), 및 복수의 제2 타입의 큐들(T2Q1, T2Q2)을 관리할 수 있다. 예를 들어, 제1 타입의 큐(T1Q1)는 제1 타입의 요청(T1RQ)들 중 읽기 요청들이 큐잉되고, 제1 타입의 큐(T1Q2)는 제1 타입의 요청(T1RQ)들 중 쓰기 요청들이 큐잉될 수 있다. 제2 타입의 큐(T2Q1)는 제2 타입의 요청(T2RQ)들 중 읽기 요청들이 큐잉되고, 제2 타입의 큐(T2Q2)는 제2 타입의 요청(T2RQ)들 중 쓰기 요청들이 큐잉될 수 있다.
또는, 예를 들어, 제1 타입의 큐(T1Q1)는 복수의 호스트들 중 제1 호스트로부터 제공된 제1 타입의 요청(T1RQ)들이 큐잉되고, 제1 타입의 큐(T1Q2)는 복수의 호스트들 중 제2 호스트로부터 제공된 제2 타입의 요청(T2RQ)들이 큐잉될 수 있다. 제2 타입의 큐(T2Q1)는 제1 호스트로부터 제공된 제2 타입의 요청(T2RQ)들이 큐잉되고, 제2 타입의 큐(T2Q2)는 제2 호스트로부터 제공된 제2 타입의 요청(T2RQ)들이 큐잉될 수 있다.
일 실시 예에서, 스토리지 컨트롤러(110)는 우선 순위 방식을 기반으로 관리 큐(AQ)의 요청들을 우선 처리할 수 있다. 이후에, 스토리지 컨트롤러(110)는 가중된 라운드 로빈 방식(WRR)을 기반으로 중간 가중치를 갖는 제2 타입의 큐들(T2Q1, T2Q2)로부터의 요청들이 선택되고, 이후에, 낮은 가중치를 갖는 제1 타입의 큐들(T1Q1, T1Q2)로부터의 요청들이 선택될 수 있다. 제2 라운드 로빈 방식(RR2)에 의해 중간 가중치를 갖는 제2 타입의 큐들(T2Q1, T2Q1)로부터의 요청들 중 처리될 요청이 선택되고, 제1 라운드 로빈 방식(RR1)에 의해 낮은 가중치를 갖는 제1 타입의 큐들(T1Q1, T1Q2)로부터의 요청들 중 처리될 요청이 선택될 수 있다. 상술된 바와 같이, 스토리지 컨트롤러는 복수의 큐들의 우선 순위 또는 가중치를 관리할 수 있고, 다양한 방식에 따라 중재(arbitration)할 수 있다.
도 13은 도 1의 스토리지 장치의 동작의 예를 보여주는 순서도이다. 도 14는 중재 정보의 예를 보여주는 도면이다. 도 1 도 13, 및 도 14을 참조하면, S810 단계에서, 스토리지 장치(100)는 호스트(11)로부터 중재 정보를 수신할 수 있다. 요청들의 타입에 따라 일정 수준의 성능이 요구될 수 있다. 스토리지 장치(100)는 요청들의 타입에 대한 중재 정보를 수신할 수 있다.
일 실시 예에서, 스토리지 장치(100)는 도 14에 도시된 바와 같은 중재 정보를 수신할 수 있다. 예를 들어, 중재 정보는 요청들의 타입에 대한 최소 성능, 최대 성능, 최소 레이턴시, 최대 레이턴시에 대한 정보를 포함할 수 있다. 최소 성능은 호스트에서 요구되는 최소 성능에 대한 정보를 가리키고, 최대 성능은 요구되는 최대 성능에 대한 정보를 가리키고, 최소 레이턴시는 요구되는 최소 레이턴시에 대한 정보를 가리키고, 최대 레이턴시는 요구되는 최대 레이턴시에 대한 정보를 가리킨다.
예를 들어, 중재 정보 중 최소 정보는 요청들의 타입에 대응하는 쓰기 최소 성능(WB_MIN1, WB_MIN2), 읽기 최소 성능(RB_MIN1, RB_MIN2), 쓰기 최소 레이턴시(WL_MIN1, WL_MIN2), 및 읽기 최소 레이턴시(RL_MIN1, RL_MIN2)에 대한 정보를 포함할 수 있다. 중재 정보 중 최대 정보는 요청들의 타입에 대응하는 쓰기 최대 성능(WB_MAX1, WB_MAX2), 읽기 최대 성능(RB_MAX1, RB_MAX2), 쓰기 최대 레이턴시(WL_MAX1, WL_MAX2), 및 읽기 최대 레이턴시(RL_MAX1, RL_MAX2)에 대한 정보를 포함할 수 있다.
일 실시 예에서, 호스트(11)로부터 중재 정보는 스토리지 장치(100)의 초기화 과정 또는 최초 통신 과정에서 수신될 수 있다. 중재 정보는 NVMe 프로토콜의 셋-피쳐(set-feature) 커맨드 또는 벤더 커맨드(Vendor commands)를 통해 호스트(11)로부터 스토리지 장치(100)로 제공될 수 있다. 또는 중재 정보는 CXL 프로토콜을 통해 호스트(11)로부터 스토리지 장치(100)로 제공될 수 있다. 예를 들어, 호스트(11)는 메모리 맵된(memory mapped)된 PCI 레지스터를 설정하여 중재 정보를 스토리지 장치(100)로 제공할 수 있다.
S820 단계에서, 스토리지 장치(100)는 중재 정보를 기반으로 중재 방식을 결정하고, 중재 방식에 따른 파라미터를 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 중재 정보를 기반으로, 복수의 중재 방식 중 가중된 라운드 로빈(WRR) 방식을 결정할 수 있다. 스토리지 컨트롤러(110)는 가중된 라운드 로빈 방식의 파라미터 중 가중치를 설정할 수 있다. 예를 들어, 제1 타입의 요청(T1RQ)의 가중치를 낮은 중치로 설정하고, 제2 타입의 요청(T2RQ)의 가중치를 중간 가중치로 설정할 수 있다.
S830 단계에서, 스토리지 장치(100)는 호스트(11)로부터 요청들을 수신할 수 있다. S840 단계에서, 스토리지 장치(100)는 설정된 파라미터를 기반으로 요청들을 스케줄링할 수 있다. 예를 들어, 도 10을 참조하면, 제2 시점(t2)에서 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ)을 수신하고, 제3 시점(t3)에서 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)을 수신할 수 있다. 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)에 대한 가중치가 제1 타입의 요청(T1RQ)에 대한 가중치 보다 높으므로, 스토리지 컨트롤러(110)는 물리 어드레스(PA10001)를 포함하는 제2 타입의 요청(T2RQ)을 제5 논리 어드레스(LA5)를 포함하는 제1 타입의 요청(T1RQ) 보다 먼저 처리 가능하도록 스케줄링 할 수 있다.
S850 단계에서, 스토리지 장치(100)는 스케줄링 한 결과를 기반으로 요청들을 처리할 수 있다. 예를 들어, 도 10을 참조하면, 스토리지 컨트롤러(110)는 제4 시점(t4)에서 제4 물리 페이지 어드레스(PP4A)를 포함하는 입출력 커맨드(즉, 제2 타입의 요청(T2RQ)에 대응함)를 불휘발성 메모리 장치(120)로 전송하고, 제6 시점(t6)에서 제3 물리 페이지 어드레스(PPA3)를 포함하는 입출력 커맨드(즉, 제1 타입의 요청(T1RQ)에 대응함)를 불휘발성 메모리 장치(120)로 전송할 수 있다.
S860 단계에서, 스토리지 장치(100)는 조건이 만족되었는지 여부를 판별할 수 있다. 스토리지 컨트롤러(110)는 중재와 관련된 파라미터의 변경이 필요한 조건이 만족되었는지 여부를 판별할 수 있다. 예를 들어, 맵핑 캐시 관리자(118)로부터 수신된 캐시 미스 및 캐시 히트의 비율에 관한 정보가 임계값에 도달한 경우, 조건이 만족될 수 있다. 스토리지 컨트롤러(110)는 호스트(11)로부터 변경된 중재 정보를 수신한 경우, 조건이 만족될 수 있다. 스토리지 컨트롤러(110)는 현재 입출력 요청들의 상태, QoS 설정의 변경, 캐시 히트 및 캐시 미스의 비율에 관한 정보를 기반으로, 파라미터의 변경이 필요한 조건이 만족되었는지 여부를 판별할 수 있다. 단, 본 개시의 범위에 한정되지 아니하며, 조건은 구현에 따라 다양하게 변형될 수 있다. 스토리지 장치(100)는 조건이 만족된 경우 S870 단계를 수행하고, 조건이 만족되지 않은 경우, 이하의 단계를 수행하지 않는다.
S870 단계에서, 스토리지 장치(100)는 현재 상태를 기반으로 파라미터를 변경할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 중재 정보, 현재 상태 정보(예를 들어, 입출력 상태, 캐시 미스 및 캐시 히트의 비율 등), 또는 환경 변수(예를 들어, QoS 설정 등) 등을 고려하여, 중재 방식을 변경하거나, 중재와 관련된 파라미터를 변경할 수 있다. 예를 들어, 캐시 미스의 비율이 높은 경우 캐시 미스의 비율을 낮추기 위해서, 스토리지 컨트롤러(110)는 제2 타입의 요청(T2RQ)들의 가중치를 중간 가중치에서 높은 가중치로 변경할 수 있다.
상술된 바와 같이, 스토리지 장치(100)는 요청들을 스케줄링할 수 있으며, 필요에 따라 중재 방식 및 파라미터들을 변경할 수 있다. 이에 따라, 스토리지 장치(100)는 호스트(11)의 성능 또는 레이턴시 요구를 만족시킬 수 있다. 향상된 성능을 갖는 스토리지 장치가 제공된다.
도 15는 도 1의 멀티-프로토콜 호스트 인터페이스 회로의 예를 보여주는 블록도이다. 멀티-프로토콜 호스트 인터페이스 회로(116)는 CXLTM에 기반하여 구현될 수 있다. 멀티-프로토콜 호스트 인터페이스 회로(116)는 플렉스 버스 물리 계층(210), CXL 중재기/멀티플렉서(220)(CXL ARB/MUX), CXL 링크 계층(230), 그리고 CXL 트랜잭션 계층(240)을 포함할 수 있다.
플렉스 버스 물리 계층(210)은 PCIe 전기적 서브-블록(211) 및 PCIe/CXL 논리적 서브-블록(212)을 포함할 수 있다. PCIe 전기적 서브-블록(211)은 PCIeⓒ 및 CXLTM에 의해 공통으로 사용될 수 있다.
PCIe/CXL 논리적 서브-블록(212)은 초기의 링크 트레이닝 시에 PCIeⓒ 모드로 진입하고, 그리고 PCIeⓒ에 의해 정해진 리커버리(recovery) 시에 모드 협의(mode negotiation)에 의존하여 CXLTM 모드로 진입하거나 PCIeⓒ 모드로 복귀할 수 있다.
CXL 중재기/멀티플렉서(220)는 PCIeⓒ 모드에서 플렉스 버스 물리 계층(210)으로부터 전달되는 그리고/또는 CXLTM 모드에서 입력 및 출력(io)과 연관된 제1 타입의 요청(T1RQ)을 CXL 링크 계층(230)의 PCIe/CXL.io 링크 계층(231)으로 전달할 수 있다. CXL 중재기/멀티플렉서(220)는 CXLTM 모드에서 플렉스 버스 물리 계층(210)으로부터 전달되는 캐시(cache) 그리고/또는 메모리(mem)와 연관된 제2 타입의 요청(T2RQ)을 CXL 링크 계층(230)의 CXL.cache 및(+) CXL.mem 링크 계층(235)으로 전달할 수 있다.
PCIe/CXL.io 링크 계층(231)은 PCIe 데이터 링크 계층(232) 및 CXL.io 링크 계층 인핸스먼츠(233)를 포함할 수 있다. PCIe 데이터 링크 계층(232)은 PCIeⓒ 모드에서 데이터 링크 계층으로 기능할 수 있다. CXL.io 링크 계층 인핸스먼츠(233)는 CXLTM 모드에서 입력 및 출력(io)과 연관된 데이터 링크 계층으로 기능할 수 있다.
CXL 트랜잭션 계층(240)은 CXL 링크 계층(230)에 기반하여 기능할 수 있다. CXL 트랜잭션 계층(240)은 PCIe/CXL.io 트랜잭션 계층(241), 그리고 CXL.Cache 및(+) CXL.mem 트랜잭션 계층(245)을 포함할 수 있다. PCIe/CXL.io 트랜잭션 계층(241)은 PCIe 데이터 트랜잭션 계층(242) 및 CXL.io 트랜잭션 계층 인핸스먼츠(243)를 포함할 수 있다.
PCIe 데이터 트랜잭션 계층(242)은 PCIe 데이터 링크 계층(232)에 기반하여 기능할 수 있다. CXL.io 트랜잭션 계층 인핸스먼츠(243)는 CXL.io 링크 계층 인핸스먼츠(233)에 기반하여 기능할 수 있다. CXL.Cache 및(+) CXL.mem 트랜잭션 계층(245)은 CXL.cache 및(+) CXL.mem 링크 계층(235)에 기반하여 기능할 수 있다.
도 16은 본 개시의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 데이터 센터(1000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(1000)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(1000)는 복수의 애플리케이션 서버들(1100_1~1100_n) 및 복수의 스토리지 서버들(1200_1~1200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(1100_1~1100_n)의 개수 및 복수의 스토리지 서버들(1200_1~1200_m)의 개수는 다양하게 변형될 수 있다.
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(1200_1)의 예시가 설명된다. 나머지 스토리지 서버들(1200_2~1200_m) 및 복수의 애플리케이션 서버들(1100_1~1100_n) 각각은 제1 스토리지 서버(1200_1)와 유사한 구조를 가질 수 있다.
제1 스토리지 서버(1200_1)는 프로세서(1210_1), 메모리(1220_1), 스위치(1230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(1240_1), 및 스토리지 장치(1250_1)를 포함할 수 있다. 프로세서(1210_1)는 제1 스토리지 서버(1200_1)의 전반적인 동작을 제어할 수 있다. 메모리(1220_1)는 프로세서(1210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(1210_1)는 메모리(1220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 일 실시 예에서, 메모리(1220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다.
일 실시 예에서, 제1 스토리지 서버(1200_1)에 포함된 프로세서(1210_1)의 개수 및 메모리(1220_1)의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(1200_1)에 포함된 프로세서(1210_1) 및 메모리(1220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(1200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 일 실시 예에서, 제1 스토리지 서버(1200_1)에 포함된 프로세서(1210_1)의 개수 및 메모리(1220_1)의 개수는 서로 다를 수 있다. 프로세서(1210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
스위치(1230_1)는 프로세서(1210_1)의 제어에 따라 프로세서(1210_1) 및 스토리지 장치(1250_1) 사이를 선택적으로 연결시키거나 또는 NIC(1240_1) 및 스토리지 장치(1250_1) 사이를 선택적으로 연결시킬 수 있다.
NIC(1240_1)는 제1 스토리지 서버(1200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(1240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(1240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(1240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(1210_1) 또는 스위치(1230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, NIC(1240_1)는 프로세서(1210_1), 스위치(1230_1), 및 스토리지 장치(1250_1) 중 적어도 하나와 통합될 수도 있다.
스토리지 장치(1250_1)는 프로세서(1210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(1250_1)는 컨트롤러(1251_1), 불휘발성 메모리(1252_1), DRAM(1253_1), 및 인터페이스(1254_1)를 포함할 수 있다. 일 실시 예에서, 스토리지 장치(1250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 더 포함할 수 있다.
컨트롤러(1251_1)는 스토리지 장치(1250_1)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 컨트롤러(1251_1)는 SRAM을 포함할 수 있다. 컨트롤러(1251_1)는 인터페이스(1254_1)를 통해 수신된 신호들에 응답하여 불휘발성 메모리(1252_1)에 데이터를 저장하거나 또는 불휘발성 메모리(1252_1)에 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 컨트롤러(1251_1)는 토글 인터페이스 또는 ONFI 인터페이스를 기반으로 불휘발성 메모리(1252_1)를 제어하도록 구성될 수 있다.
DRAM(1253_1)은 불휘발성 메모리(1252_1)에 저장될 데이터 또는 불휘발성 메모리(1252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(1253_1)은 컨트롤러(1251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(1254_1)는 프로세서(1210_1), 스위치(1230_1), 또는 NIC(1240_1)와 컨트롤러(1251_1) 사이의 물리적 연결을 제공할 수 있다. 일 실시 예에서, 인터페이스(1254_1)는 스토리지 장치(1250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 일 실시 예에서, 인터페이스(1254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다. 일 실시 예에서, 인터페이스(1254_1)는 본 개시의 실시 예에 따른 멀티-프로토콜 호스트 인터페이스 회로를 포함할 수 있다. 이에 따라, 스토리지 장치(1250_1)는 블록 인터페이스 및 메모리 인터페이스 모두 제공할 수 있다. 즉, 스토리지 장치(1250_1)는 제1 타입의 요청 및 제2 타입의 요청 모두를 처리할 수 있다.
상술된 제1 스토리지 서버(1200_1)의 구성들은 예시적인 것이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(1200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 일 실시 예에서, 복수의 애플리케이션 서버들(1100_1~1100_n) 각각에서, 스토리지 장치(1150_1)는 선택적으로 생략될 수 있다.
복수의 애플리케이션 서버들(1100_1~1100_n) 및 복수의 스토리지 서버들(1200_1~1200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fiber Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(1200_1~1200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 일 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
일 실시 예에서, 복수의 애플리케이션 서버들(1100_1~1100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(1100_1~1100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(1200_1~1200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다.
예를 들어, 제1 애플리케이션 서버(1100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(1200_1~1200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(1100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(1200_1~1200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(1100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
즉, 제1 애플리케이션 서버(1100_1)의 프로세서(1110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 1100_n)의 메모리(1120_n) 또는 스토리지 장치(1150_n)를 액세스할 수 있다. 또는 제1 애플리케이션 서버(1100_1)의 프로세서(1110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(1200_1)의 메모리(1220_1) 또는 스토리지 장치(1250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(1100_1)는 다른 애플리케이션 서버들(1100_2~1100_n) 또는 복수의 스토리지 서버들(1200_1~1200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(1100_1)는 다른 애플리케이션 서버들(1100_2~1100_n) 또는 복수의 스토리지 서버들(1200_1~1200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(1200_1~1200_m)의 스토리지 장치들(1250_1~1250_m)로부터 스토리지 서버들(1200_1~1200_m)의 메모리들(1220_1~1220_m)을 거치거나 또는 직접 애플리케이션 서버들(1100_1~1100_n)의 메모리들(1120_1~1120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
일 실시 예에서, 상술된 스토리지 서버들(1200_1~1200_m) 또는 스토리지 장치들(1150_1~1150_n, 1250_1~1250_m)은 본 개시의 실시 예에 따른 맵핑 캐시 관리자 및 요청 스케줄러를 포함할 수 있다. 즉, 스토리지 서버들(1200_1~1200_m) 또는 스토리지 장치들(1150_1~1150_n, 1250_1~1250_m) 중 적어도 하나는 도 1 내지 도 15를 참조하여 설명된 방법을 기반으로 어드레스 맵핑 정보를 캐싱할 수 있으며, 이를 기반으로 블록 단위보다 작은 단위(예를 들어, 바이트 단위 또는 캐시 라인 단위)로 데이터 액세스 제공하며, 물리 어드레스를 포함하는 제2 타입의 요청을 처리할 수 있다. 또한, 수신된 요청들을 스케줄링함으로써, 성능 및 레이턴시 요구를 만족시킬 수 있다.
이에 따라, 스토리지 서버들(1200_1~1200_m) 또는 스토리지 장치들(1150_1~1150_n, 1250_1~1250_m)로 데이터 액세스 단위가 블록 단위보다 작고, 데이터 액세스 단위가 일정하지 않은(예를 들어, 데이터 액세스 단위가 작고 랜덤(random)함) 애플리케이션(예를 들어, AI 기반 추천 시스템 또는, 딥 러닝 추천 모델(DLRM; deep learning recommendation model))에 대하여, 본 개시의 실시 예에 따른 스토리지 시스템은 향상된 성능을 제공할 수 있다.
실시 예들은 설명된 기능 또는 기능들을 수행하는 블록들의 관점에서 설명되고 예시될 수 있다. 여기에서 유닛들 또는 모듈들 등으로 지칭될 수 있는 이러한 블록들은 논리 게이트, 집적 회로, 마이크로프로세서, 마이크로컨트롤러, 메모리 회로, 수동 전자 부품, 능동 전자 부품, 광학 부품, 유선 회로 등과 같은 아날로그 및/또는 디지털 회로에 의해 물리적으로 구현되고, 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 예를 들어, 회로는 하나 이상의 반도체 칩에서, 또는 인쇄 회로 기판(PCB; printed circuit board) 등과 같은 기판 상에 구현될 수 있다. 블록을 구성하는 회로는 전용 하드웨어 또는 프로세서(예를 들어, 하나 이상의 프로그래밍된 마이크로프로세서 및 관련 회로)에 의해 구현되거나 블록의 일부 기능을 수행하는 전용 하드웨어와 블록의 다른 기능을 수행하는 프로세서의 조합으로 구현될 수 있다. 실시 예들의 각 블록은 본 개시의 범위를 벗어나지 않고 물리적으로 둘 이상의 상호작용하는 개별 블록으로 분리될 수 있다. 마찬가지로, 실시 예들의 블록은 본 개시의 범위를 벗어나지 않고 물리적으로 더 복잡한 블록으로 결합될 수 있다. 일 실시 예는 비일시적 저장 매체 내에 저장되고 프로세서에 의해 실행되는 명령어를 통해 달성될 수 있다.
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10: 스토리지 시스템
11: 호스트
12: 호스트 컨트롤러
13: 호스트 메모리
100: 스토리지 장치
110: 스토리지 컨트롤러
120: 불휘발성 메모리 장치
11: 호스트
12: 호스트 컨트롤러
13: 호스트 메모리
100: 스토리지 장치
110: 스토리지 컨트롤러
120: 불휘발성 메모리 장치
Claims (20)
- 불휘발성 메모리 장치; 및
스토리지 컨트롤러를 포함하고,
상기 스토리지 컨트롤러는:
외부 호스트로부터 제1 논리 어드레스를 포함하는 제1 타입의 요청을 수신하고, 상기 외부 호스트와 블록 단위로 상기 제1 타입의 요청에 대응하는 데이터를 송수신하고, 제1 물리 어드레스를 포함하는 제2 타입의 요청을 수신하고, 상기 외부 호스트와 블록 단위보다 작은 단위로 상기 제2 타입의 요청에 대응하는 데이터를 송수신하는 멀티-프로토콜 호스트 인터페이스 회로; 및
어드레스 변환 테이블 캐시를 관리하고, 상기 제1 물리 어드레스를 포함하는 어드레스 변환 요청을 상기 외부 호스트로 전송하고, 상기 외부 호스트로부터 상기 제1 물리 어드레스에 대응하는 맵핑 정보를 포함하는 응답을 수신하는 맵핑 캐시 관리자를 포함하는 스토리지 장치. - 제 1 항에 있어서,
상기 맵핑 캐시 관리자는, 상기 외부 호스트에서 관리되는 논리 어드레스 및 물리 어드레스 사이의 맵핑 정보들 중 일부를 캐싱하고, 상기 응답을 기반으로 상기 제1 물리 어드레스와 관련하여 제2 논리 어드레스를 상기 어드레스 변환 테이블 캐시에 저장하고, 상기 어드레스 변환 테이블 캐시를 기반으로 상기 제1 물리 어드레스를 제2 논리 어드레스로 변환하는 스토리지 장치. - 제 2 항에 있어서,
상기 제1 타입의 요청에 응답하여, 상기 제1 논리 어드레스를 제1 물리 페이지 어드레스로 변환하고, 상기 제2 타입의 요청에 응답하여, 상기 맵핑 캐시 관리자로부터 수신된 상기 제2 논리 어드레스를 제2 물리 페이지 어드레스로 변환하는 플래시 변환 계층을 더 포함하는 스토리지 장치. - 제 2 항에 있어서,
상기 맵핑 캐시 관리자는 상기 외부 호스트로부터 상기 제1 물리 어드레스를 포함하는 어드레스 무효화 요청을 수신하고, 상기 어드레스 무효화 요청에 응답하여, 상기 어드레스 변환 테이블 캐시에서 제1 물리 어드레스의 맵핑 정보를 무효화하는 스토리지 장치. - 제 1 항에 있어서,
상기 제1 타입의 요청 및 상기 제2 타입의 요청을 스케줄링하는 요청 스케줄러를 더 포함하는 스토리지 장치. - 제 5 항에 있어서,
상기 제1 타입의 요청을 수신한 이후에, 상기 제2 타입의 요청을 수신한 경우, 상기 요청 스케줄러는 상기 제2 타입의 요청에 대응하는 입출력 커맨드를 상기 불휘발성 메모리 장치로 전송하고, 이후에 상기 제1 타입의 요청에 대응하는 입출력 커맨드를 상기 불휘발성 메모리 장치로 전송하도록 제어하는 스토리지 장치. - 제 5 항에 있어서,
상기 제1 타입의 요청을 수신한 이후에, 상기 제2 타입의 요청을 수신하고, 상기 제1 타입의 요청에 대응하는 커맨드가 상기 불휘발성 메모리 장치로 전송된 경우, 상기 요청 스케줄러는 상기 제1 타입의 요청에 대응하는 중단 커맨드를 전송하고, 이후에 상기 제2 타입의 요청에 대응하는 입출력 커맨드를 전송하고, 상기 제1 타입의 요청에 대응하는 재개 커맨드를 전송하도록 제어하는 스토리지 장치. - 제 5 항에 있어서,
상기 요청 스케줄러는 상기 외부 호스트로부터 수신된 중재 정보, 및 현재 상태 정보를 기반으로 상기 제1 타입의 요청 및 상기 제2 타입의 요청을 스케줄링하고,
상기 현재 상태 정보는 현재 입출력 요청들의 상태 정보, QoS 설정 정보, 및 상기 어드레스 변환 테이블 캐시의 캐시 미스 및 캐시 히트의 비율에 관한 정보를 포함하는 스토리지 장치. - 제 1 항에 있어서,
상기 제1 타입의 요청은 NVMe(Non-Volatile Memory express)에 대응하고, 상기 제2 타입의 요청은 CXL(Compute eXpress Link).mem에 대응하는 스토리지 장치. - 불휘발성 메모리 장치 및 스토리지 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서,
외부 호스트로부터 제1 논리 어드레스 및 블록 단위인 제1 단위의 제1 데이터 크기 정보를 포함하는 제1 타입의 요청을 수신하는 단계;
상기 불휘발성 메모리 장치에 대하여, 상기 제1 타입의 요청에 대응하는 동작을 수행하는 단계;
상기 외부 호스트로부터 제1 물리 어드레스 및 제1 단위보다 작은 제2 단위의 제2 데이터 크기 정보를 포함하는 제2 타입의 요청을 수신하는 단계;
상기 제2 타입의 요청에 응답하여, 상기 제1 물리 어드레스를 포함하는 어드레스 변환 요청을 상기 외부 호스트로 전송하는 단계;
상기 외부 호스트로부터 상기 제1 물리 어드레스에 대응하는 제2 논리 어드레스를 포함하는 응답을 수신하는 단계; 및
상기 제2 논리 어드레스를 포함하는 응답을 기반으로, 상기 불휘발성 메모리 장치에 대하여, 상기 제2 타입의 요청에 대응하는 동작을 수행하는 단계를 포함하는 동작 방법. - 제 10 항에 있어서,
상기 불휘발성 메모리 장치에 대하여, 상기 제1 타입의 요청에 대응하는 동작을 수행하는 단계는:
상기 스토리지 컨트롤러에 의해, 맵핑 테이블을 기반으로 제1 논리 어드레스를 제1 물리 페이지 어드레스로 변환하는 단계; 및
상기 스토리지 컨트롤러에 의해, 상기 제1 물리 페이지 어드레스를 포함하고, 상기 제1 타입의 요청에 대응하는 입출력 커맨드를 상기 불휘발성 메모리 장치로 전송하는 단계를 포함하는 동작 방법. - 제 10 항에 있어서,
상기 제2 논리 어드레스를 포함하는 응답을 기반으로, 상기 불휘발성 메모리 장치에 대하여, 상기 제2 타입의 요청에 대응하는 동작을 수행하는 단계는:
상기 스토리지 컨트롤러에 의해, 상기 제1 물리 어드레스와 관련하여 상기 제2 논리 어드레스를 어드레스 변환 테이블 캐시에 저장하는 단계;
상기 스토리지 컨트롤러에 의해, 상기 어드레스 변환 테이블 캐시를 기반으로 상기 제1 물리 어드레스를 상기 제2 논리 어드레스로 변환하는 단계;
상기 스토리지 컨트롤러에 의해, 맵핑 테이블을 기반으로 상기 제2 논리 어드레스를 제2 물리 페이지 어드레스로 변환하는 단계; 및
상기 스토리지 컨트롤러에 의해, 상기 제2 물리 페이지 어드레스를 포함하고, 상기 제2 타입의 요청에 대응하는 입출력 커맨드를 상기 불휘발성 메모리 장치로 전송하는 단계를 포함하는 동작 방법. - 제 10 항에 있어서,
상기 제2 타입의 요청은 상기 제2 타입의 제1 요청이고,
상기 스토리지 컨트롤러에 의해, 상기 외부 호스트로부터 제2 물리 어드레스 및 상기 제2 단위의 제3 데이터 크기 정보를 포함하는 제2 타입의 제2 요청을 수신하는 단계;
상기 스토리지 컨트롤러에 의해, 상기 제2 타입의 요청에 응답하여, 어드레스 변환 테이블 캐시에 상기 제2 물리 어드레스에 대한 맵핑 정보가 존재하는지 판별하는 단계;
상기 스토리지 컨트롤러에 의해, 상기 제2 물리 어드레스 대한 맵핑 정보가 존재하는 경우, 상기 어드레스 변환 테이블 캐시를 기반으로 상기 제2 물리 어드레스를 제3 논리 어드레스로 변환하는 단계;
상기 스토리지 컨트롤러에 의해, 맵핑 테이블을 기반으로 상기 제3 논리 어드레스를 제3 물리 페이지 어드레스로 변환하는 단계; 및
상기 스토리지 컨트롤러에 의해, 상기 제3 물리 페이지 어드레스를 포함하고 상기 제2 타입의 제2 요청에 대응하는 입출력 커맨드를 상기 불휘발성 메모리 장치로 전송하는 단계를 더 포함하는 동작 방법. - 제 10 항에 있어서,
상기 외부 호스트로부터 상기 제1 물리 어드레스를 포함하는 어드레스 무효화 요청을 수신하는 단계;
상기 어드레스 무효화 요청에 응답하여, 어드레스 변환 테이블 캐시에 상기 제1 물리 어드레스의 맵핑 정보를 무효화하는 단계; 및
상기 어드레스 무효화 요청에 대응하는 응답을 상기 외부 호스트로 전송하는 단계를 더 포함하는 동작 방법. - 제 10 항에 있어서,
상기 제1 타입의 요청 및 상기 제2 타입의 요청을 스케줄링하는 단계를 더 포함하는 동작 방법. - 제 10 항에 있어서,
상기 외부 호스트로부터 중재 정보를 수신하는 단계;
상기 중재 정보를 기반으로 중재 방식 및 파라미터를 설정하는 단계; 및
상기 중재 방식 및 상기 파라미터를 기반으로 상기 제1 타입의 요청 및 상기 제2 타입의 요청을 스케줄링하는 단계를 더 포함하는 동작 방법. - 제 16 항에 있어서,
상기 파라미터를 변경할 조건이 만족되었는지 판별하는 단계; 및
상기 조건이 만족된 경우, 현재 상태 정보 및 상기 중재 정보를 기반으로 상기 파라미터의 값을 변경하는 단계를 더 포함하고,
상기 현재 상태 정보는 현재 입출력 요청들의 상태 정보, QoS 설정 정보, 및 어드레스 변환 테이블 캐시의 캐시 미스 및 캐시 히트의 비율에 관한 정보를 포함하는 는 동작 방법. - 제1 논리 어드레스를 포함하는 제1 타입의 요청을 전송하고, 제1 물리 어드레스를 포함하는 제2 타입의 요청을 전송하고, 논리 어드레스 및 물리 어드레스 사이의 맵핑 정보들을 관리하는 호스트; 및
상기 호스트로부터 상기 제1 타입의 요청 및 상기 제2 타입의 요청을 수신하고, 상기 맵핑 정보들의 일부를 캐싱하여 어드레스 맵핑 테이블 캐시를 관리하고, 상기 제1 타입의 요청에 응답하여 블록 단위로 데이터를 액세스하도록 제공하고, 상기 제2 타입의 요청에 응답하여 블록 단위보다 작은 단위로 데이터를 액세스하도록 제공하는 스토리지 장치를 포함하는 스토리지 시스템. - 제 18 항에 있어서,
상기 스토리지 장치는 제1 물리 어드레스에 대한 어드레스 변환 요청을 상기 호스트로 전송하고,
상기 호스트는 상기 어드레스 변환 요청에 응답하여, 상기 맵핑 정보들을 기반으로 상기 제1 물리 어드레스를 제2 논리 어드레스로 변환하고, 상기 제2 논리 어드레스를 포함하는 응답을 상기 스토리지 장치에 전송하는 스토리지 시스템. - 제 18 항에 있어서,
상기 제1 물리 어드레스에 대한 맵핑 정보가 갱신된 경우, 상기 호스트는 상기 제1 물리 어드레스에 대한 무효화 요청을 상기 스토리지 장치로 전송하고,
상기 스토리지 장치는 상기 무효화 요청에 응답하여, 상기 제1 물리 어드레스에 대한 맵핑 정보를 무효화하는 스토리지 시스템.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/680,773 US11822813B2 (en) | 2021-12-28 | 2022-02-25 | Storage device, operation method of storage device, and storage system using the same |
EP22167617.4A EP4206935B1 (en) | 2021-12-28 | 2022-04-11 | Storage device, operation method of storage device, and storage system using the same |
CN202210748912.1A CN116360673A (zh) | 2021-12-28 | 2022-06-28 | 存储装置、存储装置的操作方法及使用其的存储系统 |
US18/492,762 US20240053917A1 (en) | 2021-12-28 | 2023-10-23 | Storage device, operation method of storage device, and storage system using the same |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163294251P | 2021-12-28 | 2021-12-28 | |
US63/294,251 | 2021-12-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230100522A true KR20230100522A (ko) | 2023-07-05 |
Family
ID=87159105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220010998A KR20230100522A (ko) | 2021-12-28 | 2022-01-25 | 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230100522A (ko) |
-
2022
- 2022-01-25 KR KR1020220010998A patent/KR20230100522A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6709245B2 (ja) | 適応持続性システム、方法、インタフェース | |
US11163699B2 (en) | Managing least recently used cache using reduced memory footprint sequence container | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US20150019798A1 (en) | Method and Apparatus for Providing Dual Memory Access to Non-Volatile Memory | |
KR20220045216A (ko) | 유형화된 메모리 액세스에 대한 유형화되지 않은 메모리 액세스의 맵핑 | |
US20210326270A1 (en) | Address translation at a target network interface device | |
JP2022548886A (ja) | メモリ名前空間へデータをバインドするためのメモリシステム | |
KR20220060548A (ko) | 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱 | |
US11755241B2 (en) | Storage system and method for operating storage system based on buffer utilization | |
EP4439312A1 (en) | Data storage method and system, storage access configuration method and related device | |
CN110321057B (zh) | 具有增强io性能确定性的缓存的存储设备 | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
EP4099171A1 (en) | Systems, methods, and apparatus for page migration in memory systems | |
TW202318205A (zh) | 記憶體系統及資料輸入輸出系統 | |
CN112703481B (zh) | 混合式存储器系统接口 | |
KR20230100522A (ko) | 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템 | |
CN115328402A (zh) | 数据缓存的方法和装置 | |
US20240086110A1 (en) | Data storage method, storage apparatus and host | |
EP4414821A1 (en) | Operation method of storage device | |
US20240264772A1 (en) | Operation method of storage device | |
WO2016170632A1 (ja) | 計算機及び電源制御方法 |