1 |
1
복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치;버퍼 메모리; 및호스트로부터 제 1 할당 요청 및 제 1 논리 어드레스 정보를 수신하고, 상기 제 1 논리 어드레스 정보의 논리 어드레스들을 상기 제 1 할당 요청에 응답하여 상기 복수의 메모리 블록들의 제 1 물리 그룹으로 할당하고, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청 및 제 1 쓰기 데이터를 수신하고, 상기 제 1 쓰기 데이터를 상기 버퍼 메모리에 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 제 1 쓰기 요청에 응답하여 상기 제 1 물리 그룹의 메모리 블록들로 기입하는 스토리지 컨트롤러를 포함하되,상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행하는 스토리지 장치
|
2 |
2
제 1 항에 있어서,상기 제 1 논리 어드레스 정보의 상기 논리 어드레스들 및 상기 제 1 물리 그룹을 맵핑하기 위한 제 1 맵핑 테이블을 더 포함하는 스토리지 장치
|
3 |
3
제 2 항에 있어서,상기 제 1 물리 그룹 및 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹에 속한 메모리 블록들을 맵핑하기 위한 제 2 맵핑 테이블; 및상기 제 1 논리 어드레스 정보의 제 1 논리 어드레스 및 제 1 물리 어드레스를 맵핑하기 위한 제 3 맵핑 테이블을 더 포함하는 스토리지 장치
|
4 |
4
제 2 항에 있어서,상기 스토리지 컨트롤러는 제 2 쓰기 요청, 제 2 논리 어드레스 정보, 및 제 2 쓰기 데이터를 수신하고, 제 2 물리 어드레스를 상기 제 2 논리 어드레스 정보의 제 2 논리 어드레스로 상기 제 1 내지 제 3 맵핑 테이블에 기초하여 할당하고, 그리고 상기 제 2 물리 어드레스로 상기 제 2 쓰기 데이터를 기입하되,상기 제 2 물리 어드레스는 상기 제 1 물리 그룹과 무관한 스토리지 장치
|
5 |
5
제 2 항에 있어서,상기 스토리지 컨트롤러는 제 2 할당 요청 및 제 2 논리 어드레스 정보를 상기 호스트로부터 수신하고, 그리고 상기 복수의 메모리 블록들 중 상기 제 2 논리 어드레스 정보와 연관된 메모리 블록들의 그룹이 존재하는지를 상기 제 1 맵핑 테이블에 기초하여 판단하는 스토리지 장치
|
6 |
6
제 5 항에 있어서,상기 제 2 논리 어드레스 정보와 연관된 메모리 블록들의 그룹이 존재하지 않으면, 상기 스토리지 컨트롤러는 제 2 물리 그룹을 상기 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하되,상기 제 2 물리 그룹은 상기 제 1 물리 그룹과 무관한 스토리지 장치
|
7 |
7
제 5 항에 있어서,상기 제 2 논리 어드레스 정보가 상기 제 1 물리 그룹과 연관되었다고 판단되면, 상기 스토리지 컨트롤러는 상기 제 1 물리 그룹과 연관된 제 2 물리 어드레스들을 상기 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하는 스토리지 장치
|
8 |
8
제 1 항에 있어서,상기 불휘발성 메모리 장치는 SSD(Solid State Drive)를 포함하는 스토리지 장치
|
9 |
9
복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치 및 스토리지 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서:제 1 할당 요청 및 제 1 논리 공간과 연관된 제 1 논리 어드레스 정보를 호스트로부터 수신하는 단계;제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계;제 1 쓰기 데이터의 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청을 상기 호스트로부터 수신하는 단계; 상기 스토리지 장치의 버퍼 메모리로 저장하는 단계; 및상기 제 1 쓰기 요청에 응답하여, 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹 ID와 연관된 제 1 메모리 블록으로 기입하는 단계를 포함하되,상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행하는 스토리지 장치의 동작 방법
|
10 |
10
제 9 항에 있어서,상기 제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계는 상기 제 1 논리 어드레스 정보와 연관된 물리 그룹 ID가 존재하는지 여부를 제 1 맵핑 테이블에 기초하여 판단하는 단계; 및상기 제 1 맵핑 테이블을 업데이트하는 단계를 포함하는 스토리지 장치의 동작 방법
|
11 |
11
제 9 항에 있어서,상기 제 1 쓰기 데이터를 상기 제 1 메모리 블록으로 기입하는 단계는:상기 제 1 논리 어드레스 정보에 대응하는 제 1 인스턴스를, 상기 제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 맵핑하기 위한 제 1 맵핑 테이블 및 상기 제 1 물리 그룹 ID를 상기 제 1 메모리 블록으로 맵핑하기 위한 제 2 맵핑 테이블에 기초하여 검색하는 단계;상기 제 1 메모리 블록의, 상기 제 1 인스턴스에 대응하는 제 1 물리 어드레스가 가리키는 위치에 상기 제 1 쓰기 데이터를 기입하는 단계; 및상기 제 1 인스턴스를 업데이트하는 단계를 포함하되,상기 제 1 인스턴스는 상기 제 1 논리 어드레스 정보, 상기 제 1 메모리 블록, 및 제 1 포인터에 대한 제 1 메타데이터를 포함하는 스토리지 장치의 동작 방법
|
12 |
12
제 11 항에 있어서,상기 제 1 물리 어드레스는 상기 제 1 메모리 블록 및 상기 제 1 포인터와 연관되고, 그리고상기 제 1 인스턴스를 업데이트하는 단계는 상기 제 1 포인터를 업데이트하는 단계를 포함하는 스토리지 장치의 동작 방법
|
13 |
13
제 9 항에 있어서,제 2 쓰기 데이터의 제 2 논리 어드레스 정보와 연관된 제 2 쓰기 요청을 상기 호스트로부터 수신하는 단계;상기 제 2 쓰기 요청에 응답하여, 상기 제 2 논리 어드레스 정보에 대응하는 인스턴스를 검색하는 단계; 및상기 제 2 논리 어드레스 정보에 대응하는 단일한 인스턴스인 제 1 인스턴스가 검색되면, 상기 제 2 쓰기 데이터를 상기 검색된 제 1 인스턴스에 기초하여 상기 불휘발성 메모리 장치로 기입하는 단계;상기 제 2 논리 어드레스 정보에 대응하는 복수의 인스턴스들이 검색되면, 에러 메시지를 상기 호스트로 반환하는 단계; 및상기 제 2 논리 어드레스 정보에 대응하는 인스턴스가 검색되지 않으면:제 2 메모리 블록을 상기 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계;상기 제 2 논리 어드레스 정보의 상기 논리 어드레스들 및 상기 제 2 메모리 블록에 기초하는 제 2 인스턴스를 생성하는 단계; 및상기 제 2 쓰기 데이터를 상기 제 2 인스턴스에 기초하여 기입하는 단계를 포함하는 스토리지 장치의 동작 방법
|
14 |
14
제 9 항에 있어서,상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들 중 상기 제 1 메모리 블록을 상기 제 1 물리 그룹 ID로 상기 제 1 할당 요청이 수신되는 시점에 할당하는 스토리지 장치의 동작 방법
|
15 |
15
제 9 항에 있어서,상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들 중 상기 제 1 메모리 블록을 상기 제 1 물리 그룹 ID로 상기 제 1 쓰기 요청이 수신되는 제 1 시점 또는 상기 제 1 할당 요청이 수신되는 시점부터 제 1 기준 시간이 경과된 제 2 시점 중 어느 한 시점에 할당하는 스토리지 장치의 동작 방법
|
16 |
16
호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법에 있어서:상기 호스트에 의해, 제 1 논리 공간을 제 1 데이터에 할당하기 위한 제 1 명령을 호출하는 단계;상기 호스트에 의해, 물리 공간을 상기 제 1 논리 공간으로 할당하기 위한 제 2 명령을 상기 제 1 명령에 응답하여 상기 스토리지 장치로 호출하는 단계;상기 스토리지 장치에 의해, 상기 제 2 명령에 응답하여 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계;상기 호스트에 의해, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 데이터를 저장할 것을 상기 스토리지 장치로 요청하는 단계; 및상기 스토리지 장치에 의해, 상기 제 1 쓰기 데이터를 상기 스토리지 장치의 버퍼 메모리로 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 스토리지 장치의 불휘발성 메모리 장치의 복수의 메모리 블록들 중 제 1 메모리 블록으로 기입하는 단계를 포함하는 스토리지 시스템의 동작 방법
|
17 |
17
제 16 항에 있어서,상기 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 상기 제 1 논리 어드레스 정보의 상기 논리 어드레스들로 할당하는 단계는;상기 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 상기 제 1 논리 어드레스 정보의 상기 논리 어드레스들로 맵핑하기 위한 제 1 맵핑 테이블을 업데이트 하는 단계;상기 복수의 메모리 블록들 중 상기 제 1 메모리 블록 및 제 2 메모리 블록을 상기 제 1 물리 그룹 ID로 할당하는 단계; 및상기 제 1 논리 어드레스 정보, 상기 제 1 메모리 블록, 및 상기 제 2 메모리 블록과 연관된 제 1 인스턴스를 생성하는 단계를 포함하고, 그리고상기 제 1 쓰기 데이터를 기입하는 단계는 상기 제 1 인스턴스에 기초하여 수행되는 스토리지 시스템의 동작 방법
|
18 |
18
제 17 항에 있어서,상기 제 1 메모리 블록 및 상기 제 2 메모리 블록을 상기 제 1 물리 그룹 ID로 할당하는 단계는 상기 복수의 메모리 블록들에 대해 가비지 컬렉션(Garbage Collection)을 수행하는 단계를 포함하는 스토리지 시스템의 동작 방법
|
19 |
19
제 16 항에 있어서,상기 제 1 쓰기 데이터를 상기 제 1 메모리 블록으로 기입하는 단계는:상기 제 1 논리 어드레스 정보에 대응하는 인스턴스를 검색하는 단계;상기 제 1 논리 어드레스 정보에 대응하는 단일한 제 1 인스턴스가 검색된 것에 응답하여, 상기 제 1 쓰기 데이터를 상기 제 1 인스턴스에 기초하여 상기 제 1 메모리 블록으로 기입하는 단계;상기 제 1 논리 어드레스 정보에 대응하는 복수의 인스턴스들이 검색된 것에 응답하여, 상기 호스트로 에러 메시지를 반환하는 단계; 및상기 제 1 논리 어드레스 정보에 대응하는 인스턴스가 검색되지 않으면:상기 제 1 논리 어드레스 정보 및 상기 제 1 메모리 블록에 연관된 제 2 인스턴스를 생성하는 단계; 및상기 제 1 쓰기 데이터를 상기 제 2 인스턴스에 기초하여 상기 제 1 메모리 블록으로 기입하는 단계를 포함하는 스토리지 시스템의 동작 방법
|
20 |
20
제 16 항에 있어서,상기 호스트에 의해, 제 2 논리 공간을 제 2 데이터에 할당하기 위한 제 3 명령을 호출하는 단계;상기 호스트에 의해, 물리 공간을 상기 제 2 논리 공간으로 할당하기 위한 제 4 명령을 상기 제 3 명령에 응답하여 상기 스토리지 장치로 호출하는 단계;상기 스토리지 장치에 의해, 상기 제 4 명령에 응답하여 제 2 물리 그룹 ID를 상기 제 2 논리 공간과 연관된 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계를 더 포함하되,상기 제 1 논리 공간 및 상기 제 2 논리 공간은 서로 겹치지 않고, 그리고 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹 ID와 연관된 메모리 블록들은 상기 제 2 물리 그룹 ID와 연관된 메모리 블록들과 상이한 스토리지 시스템의 동작 방법
|