(19) 대한민국특허청(KR) (12) 등록특허공보(B1) (45) 공고일자 2010년07월16일 (11) 등록번호 10-0970537 (24) 등록일자 2010년07월08일 (51) Int. Cl. G06F 12/06 (2006.01) G06F 12/02 (2006.01) G06F 12/00 (2006.01) (21) 출원번호 10-2008-0115607 (22) 출원일자 2008년11월20일 심사청구일자 2008년11월20일 (65) 공개번호 10-2010-0056685 (43) 공개일자 2010년05월28일 (56) 선행기술조사문헌 KR1020020092487 A (73) 특허권자 서울시립대학교 산학협력단 서울 동대문구 전농동 90 (72) 발명자 노삼혁 서울시 마포구 상수동 72-1 홍익대학교 컴퓨터공 학과 T동808호 이동희 서울시 동대문구 전농동 90 서울시립대학교 공과 대학 컴퓨터과학부 (뒷면에 계속) KR1020060130013 A KR1020090034135 A (74) 대리인 특허법인무한 SSD(Solid State Drive) 시뮬레이터의 설계 및 구 현(변유준 외 4인, 한국정보과학회 2008년 가을 학술발표논문집 Vol. 35, No. 2(B), Pages. 445-450, 2008.10.) 전체 청구항 수 : 총 13 항 심사관 : 이상헌 (54) SSD 관리 장치 및 방법 (57) 요 약 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 적어도 하나의 논리 블록(Logical Block)으 로 분할하고, 상기 SSD에 대해 적어도 하나의 쓰기(write) 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단 위로 쓰기 요청을 수행하는 SSD 관리 장치가 개시된다. 대 표 도 - 도1-1 -
(72) 발명자 최종무 경기도 용인시 수지구 죽전동 단국대학교 컴퓨터학 과 김은삼 서울시 마포구 상수동 72-1 홍익대학교 컴퓨터공학 과 T동708호 현철승 서울시 동대문구 전농동 90 서울시립대학교 공과대 학 컴퓨터과학부 오용석 경기도 과천시 과천동 152-3 - 2 -
특허청구의 범위 청구항 1 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 선정된(predetermined) 크기의 적어도 하나 의 논리 블록(Logical Block)으로 분할하는 분할부; 및 상기 SSD에 대해 적어도 하나의 쓰기(write) 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행하는 제어부 를 포함하고, 상기 제어부는 상기 적어도 하나의 논리 블록 중에서 상기 어느 하나의 논리 블록을 선택하는 선택부를 더 포함 하는 SSD 관리 장치. 청구항 2 제1항에 있어서, 상기 분할부는, 상기 SSD와 매핑(mapping)된 장치 파일에 대해 쓰기 요청의 크기를 변화시키면서, 순차 쓰기를 수행할 경우의 제1 대역폭과 랜덤 쓰기를 수행할 경우의 제2 대역폭을 비교하여 상기 제1 대역폭과 상기 제2 대역폭이 동일한 경우에 해당하는 쓰기 요청의 크기를 상기 선정된 크기로 결정하는 것을 특징으로 하는 SSD 관리 장치. 청구항 3 삭제 청구항 4 제1항에 있어서, 상기 선택부는, 상기 적어도 하나의 논리 블록 중에서 사용되지 않는 섹터(sector)의 개수가 최대가 되는 논리 블록을 상기 어 느 하나의 논리 블록으로 선택하는 것을 특징으로 하는 SSD 관리 장치. 청구항 5 제4항에 있어서, 상기 선택부는, 상기 적어도 하나의 논리 블록을, 사용되는 섹터의 개수 또는 사용되지 않는 섹터의 개수 중 어느 하나의 순서 를 기준으로 정렬한 후 상기 SSD에 대해 상기 적어도 하나의 쓰기 요청이 발생하는 경우, 상기 어느 하나의 논 리 블록을 선택하는 것을 특징으로 하는 SSD 관리 장치. 청구항 6 제1항에 있어서, 상기 선택부는, 상기 적어도 하나의 논리 블록 각각에 대해, 사용되고 있는 섹터의 개수를 기준 값(threshold)과 비교하여 상기 섹터의 개수가 상기 기준 값 미만인 논리 블록을 상기 어느 하나의 논리 블록으로 선택하는 것을 특징으로 하는 SSD 관리 장치. 청구항 7 제6항에 있어서, - 3 -
상기 선택부는, 상기 적어도 하나의 논리 블록 전체에서 사용되고 있는 섹터의 비율을 이용하여 상기 적어도 하나의 논리 블록 각각에서 사용되고 있는 섹터의 비율 중 최소 값을 연산하고, 상기 최소 값을 기초로 상기 기준 값을 선정하는 것을 특징으로 하는 SSD 관리 장치. 청구항 8 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 선정된(predetermined) 크기의 적어도 하나 의 논리 블록(Logical Block)으로 분할하는 단계; 및 상기 SSD에 대해 적어도 하나의 쓰기(write) 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행하는 단계 를 포함하고, 상기 쓰기 요청을 수행하는 단계는, 상기 적어도 하나의 논리 블록 중에서 상기 어느 하나의 논리 블록을 선택하는 단계를 더 포함하는 SSD 관리 방 법. 청구항 9 제8항에 있어서, 상기 분할하는 단계는, 상기 SSD와 매핑(mapping)된 장치 파일에 대해 쓰기 요청의 크기를 변화시키면서, 순차 쓰기를 수행할 경우의 제1 대역폭과 랜덤 쓰기를 수행할 경우의 제2 대역폭을 비교하여 상기 제1 대역폭과 상기 제2 대역폭이 동일한 경우에 해당하는 쓰기 요청의 크기를 상기 선정된 크기로 결정하는 것을 특징으로 하는 SSD 관리 방법. 청구항 10 삭제 청구항 11 제8항에 있어서, 상기 선택하는 단계는, 상기 적어도 하나의 논리 블록 중에서 사용되지 않는 섹터(sector)의 개수가 최대가 되는 논리 블록을 상기 어 느 하나의 논리 블록으로 선택하는 것을 특징으로 하는 SSD 관리 방법. 청구항 12 제11항에 있어서, 상기 선택하는 단계는, 상기 적어도 하나의 논리 블록을, 사용되는 섹터의 개수 또는 사용되지 않는 섹터의 개수 중 어느 하나의 순서 를 기준으로 정렬한 후 상기 SSD에 대해 상기 적어도 하나의 쓰기 요청이 발생하는 경우, 상기 어느 하나의 논 리 블록을 선택하는 것을 특징으로 하는 SSD 관리 방법. 청구항 13 제8항에 있어서, 상기 선택하는 단계는, 상기 적어도 하나의 논리 블록 각각에 대해, 사용되고 있는 섹터의 개수를 기준 값(threshold)과 비교하여 상기 섹터의 개수가 상기 기준 값 미만인 논리 블록을 상기 어느 하나의 논리 블록으로 선택하는 것을 특징으로 하는 - 4 -
SSD 관리 방법. 청구항 14 제13항에 있어서, 상기 선택하는 단계는, 상기 적어도 하나의 논리 블록 전체에서 사용되고 있는 섹터의 비율을 이용하여 상기 적어도 하나의 논리 블록 각각에서 사용되고 있는 섹터의 비율 중 최소 값을 연산하고, 상기 최소 값을 기초로 상기 기준 값을 선정하는 것을 특징으로 하는 SSD 관리 방법. 청구항 15 제8항, 제9항 또는 제11항 내지 제14항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체. 명 세 서 발명의 상세한 설명 [0001] 기 술 분 야 솔리드 스테이트 드라이브(Solid State Drive: SSD) 관리 장치 및 방법이 개시된다. 특히, SSD의 쓰기 연산 과 정에 대한 성능 향상을 통해 SSD 전반에 대해 성능을 향상시킬 수 있는 SSD 관리 장치 및 방법이 개시된다. [0002] [0003] [0004] [0005] [0006] [0007] [0008] 배 경 기 술 데이터를 저장하는 스토리지 장치로는 자기 디스크(magnetic disk), 반도체 메모리 등이 있을 수 있다. 스토리 지 장치는 종류 별로 서로 다른 물리적 특성을 가지기 때문에 물리적 특성에 상응하는 관리 방법이 필요하다. 종래의 스토리지 장치로는 자기 디스크가 널리 사용되어 왔다. 자기 디스크는 평균적으로 킬로바이트 (kilobyte) 당 수 밀리초(millisecond)의 읽기 및 쓰기 시간을 특성으로 가진다. 또한, 자기 디스크는 데이터 가 저장된 물리적 위치에 따라 암(arm)이 도달하는 시간이 다르기 때문에 읽기 및 쓰기 시간이 달라지는 특성을 가진다. 최근에는 자기 디스크에 비하여 읽기 및 쓰기 시간이 짧고 작은 전력을 소모하며 작은 부피를 차지하는 비휘발 성 메모리 장치가 급속하게 자기 디스크를 대체하고 있다. 이는 비휘발성 메모리 장치의 대용량화가 이루어졌 기 때문에 가능한 결과이다. 비휘발성 메모리 장치는 전기적으로 읽기(read), 쓰기(write) 및 소거(erase)가 가능하며, 공급 전원이 없는 상 태에서도 저장된 데이터를 유지할 수 있는 반도체 메모리 장치이다. 비휘발성 메모리 장치에 대한 데이터의 저 장 과정은 쓰기 외에도 프로그래밍(programming)이라고 불리기도 한다. 비휘발성 메모리 장치에 대한 프로그래밍은 페이지 단위로 수행될 수 있고 소거는 블록 단위로 수행될 수 있다. 블록은 복수의 페이지들을 포함할 수 있다. 비휘발성 메모리 장치의 컨트롤러는 외부의 호스트(host) 또는 프 로세서(processor)에 논리 주소(logical address)를 제공하고, 비휘발성 메모리 장치에 대해서는 물리 주소 (physical address)를 제공할 수 있다. 컨트롤러는 물리 주소를 이용하여 비휘발성 메모리 장치를 관리하고, 물리 주소를 논리 주소로 변환할 수 있다. 이처럼 물리 주소 및 논리 주소의 변환이 수행되는 계층을 플래시 변환 계층(Flash Translation Layer: FTL)라 하기도 한다. 최근에는 비휘발성 메모리 장치 중 하나인 플래시 메모리를 이용한 솔리드 스테이트 드라이브(Solid State Drive: SSD)라고 하는 대용량 스토리지 장치가 많은 관심을 받고 있다. SSD는 다수의 플래시 메모리 칩과 버스, 컨트롤러 및 호스트 시스템의 요청을 버퍼링하는 메모리로 구성되어 있다. SSD는 기존의 자기 디스크와 는 달리 읽기와 쓰기를 수행할 때 필요한 시간이 비대칭이라는 특징을 가지고 있다. 따라서, SSD는 쓰기 연산 을 얼마나 효율적으로 수행하는지 여부가 시스템 성능에 가장 큰 영향을 줄 수 있다. 그러므로, SSD의 쓰기 연산을 고려하여 SSD의 성능 향상을 최대화할 수 있도록 하는 기술에 대해 연구가 필요하 다. - 5 -
발명의 내용 [0009] 해결 하고자하는 과제 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 논리 블록(Logical Block)으로 분할하고, SSD에서 발생하는 다수의 쓰기(write) 요청을 논리 블록에 할당하여 SSD에 대해 논리 블록 단위로 쓰기 요청을 수행하는 SSD 관리 장치 및 방법을 제공함으로써 SSD의 성능을 향상시키고자 한다. [0010] [0011] 과제 해결수단 본 발명의 일실시예에 따른 SSD 관리 장치는 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 선정된(predetermined) 크기의 적어도 하나의 논리 블록(Logical Block)으로 분할하는 분할부 및 상기 SSD에 대 해 적어도 하나의 쓰기(write) 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행하 는 제어부를 포함한다. 또한, 본 발명의 일실시예에 따른 SSD 관리 방법은 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 선정된(predetermined) 크기의 적어도 하나의 논리 블록(Logical Block)으로 분할하는 단계 및 상기 SSD 에 대해 적어도 하나의 쓰기(write) 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행하는 단계를 포함한다. [0012] 효 과 솔리드 스테이트 드라이브(Solid State Drive: SSD)의 저장 공간을 논리 블록(Logical Block)으로 분할하고, SSD에서 발생하는 다수의 쓰기(write) 요청을 논리 블록에 할당하여 SSD에 대해 논리 블록 단위로 쓰기 요청을 수행하는 SSD 관리 장치 및 방법을 제공함으로써 SSD의 성능 향상을 기대할 수 있다. [0013] [0014] [0015] [0016] [0017] [0018] [0019] [0020] 발명의 실시를 위한 구체적인 내용 이하에서는 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다. 도 1은 본 발명의 일실시예에 따른 솔리드 스테이트 드라이브(Solid State Drive: SSD) 관리 장치의 구조를 도 시한 도면이다. 도 1을 참조하면 SSD 관리 장치(110)가 도시되어 있다. SSD 관리 장치(110)는 분할부(111) 및 제어부(112)를 포함할 수 있다. 분할부(111)는 SSD의 저장 공간을 선정된(predetermined) 크기의 적어도 하나의 논리 블록(Logical Block)으로 분할한다. 일반적으로 SSD는 다수의 플래시 메모리 칩과 버스, 플래시 변환 계층(Flash Translation Layer: FTL)을 수행하 는 컨트롤러 및 호스트 시스템의 요청을 버퍼링하는 메모리로 구성되어 있다. 이러한 구조로 인해 SSD는 다수 의 칩과 버스를 병렬로 동작시킴으로써 높은 성능을 획득할 수 있다. SSD내에 포함되어 있는 FTL은 다수의 칩 에서 논리적으로 동일한 블록 번호를 갖는 블록들과 논리적으로 동일한 페이지 번호를 갖는 페이지들을 각각 블 록 그룹과 페이지 그룹이라는 논리적인 단위로 구성하여 연산을 수행한다. 이때, FTL은 상기 페이지 그룹에 대 한 읽기(read) 및 쓰기(write) 연산을 모든 칩에서 병렬적으로 수행함으로써 SSD 전반의 성능 향상에 기여할 수 있다. 또한, FTL은 상기 블록 그룹에 대한 소거 연산의 경우에도 모든 칩의 블록들에 대해 병렬적으로 수행함 으로써 SSD의 성능 향상에 기여할 수 있다. 이상과 같이 SSD에서는 읽기 및 쓰기 연산을 병렬적으로 수행할 수 있도록 하는 요청의 크기가 존재하며, 이를 논리 블록이라고 한다. 따라서, 분할부(111)는 SSD의 저장 공간을 앞서 설명한 논리 블록의 단위로 분할함으로써 상기 SSD가 읽기 및 쓰기 연산을 병렬적으로 수행하도록 할 수 있다. 본 발명의 일실시예에 따르면, 분할부(111)는 상기 SSD와 매핑(mapping)된 장치 파일에 대해 쓰기 요청의 크기 를 변화 시키면서, 순차 쓰기를 수행할 경우의 제1 대역폭과 랜덤 쓰기를 수행할 경우의 제2 대역폭을 비교하여 상기 제1 대역폭과 상기 제2 대역폭이 동일한 경우에 해당하는 쓰기 요청의 크기를 상기 선정된 크기로 결정할 - 6 -
수 있다. [0021] [0022] [0023] [0024] [0025] [0026] [0027] [0028] [0029] [0030] [0031] [0032] [0033] [0034] [0035] [0036] [0037] [0038] [0039] SSD에서 논리 블록을 통해 칩과 버스를 병렬적으로 동작시키고 병합 연산의 비용을 최소화하기 위해서는 SSD의 대역폭이 최대가 되는 논리 블록의 크기를 결정해야 한다. 이를 위해 본 발명의 일실시예에 따른 분할부(111)는 상기 SSD와 매핑된 장치 파일을 O_SYNC 모드로 열고, 상기 장치 파일에 대해 쓰기 요청의 크기를 변화시키면서 순차 쓰기와 랜덤 쓰기를 수행할 수 있다. 이때, 특정 위치에 상기 쓰기 요청이 이루어진 경우, 상기 특정 위치에 대해 다시 쓰기 요청이 이루어지지 않도 록 할 수 있다. 그리고 나서, 상기 순차 쓰기를 수행할 경우 획득한 상기 제1 대역폭과 상기 랜덤 쓰기를 수행할 경우 획득한 상기 제2 대역폭을 비교하여 상기 제1 대역폭과 상기 제2 대역폭이 동일할 경우에 해당하는 쓰기 요청의 크기를 상기 논리 블록의 크기로 결정할 수 있다. 예컨대, 상기 장치 파일에 상기 순차 쓰기와 상기 랜덤 쓰기를 1GB만큼 수행한다고 가정하자. 이때, 상기 쓰기 요청의 크기를 4KB부터 증가시키면서 상기 순차 쓰기와 랜덤 쓰기를 한다고 할 때, 만약, 상기 쓰기 요청의 크기가 4KB인 경우, 상기 제1 대역폭과 상기 제2 대역폭이 동일해졌다면, 상기 논리 블록은 4KB가 될 수 있다. 만약, 상기 제1 대역폭과 상기 제2 대역폭을 비교한 결과, 상기 제1 대역폭과 상기 제2 대역폭이 서로 동일하지 않다면, 상기 쓰기 요청의 크기를 n배 증폭하여 전술한 과정을 되풀이한다. 이와 같이 상기 쓰기 요청의 크기를 증폭시키면서 제1 대역폭과 제2 대역폭이 동일해 질 때까지 전술한 과정을 되풀이함으로써 상기 논리 블록의 크기를 결정할 수 있다. 단, 여기서 상기 제1 대역폭과 상기 제2 대역폭이 동일하다는 의미는 상기 제1 대역폭과 상기 제2 대역폭이 정 확히 일치하는 경우를 의미할 뿐만 아니라, 상기 제1 대역폭과 상기 제2 대역폭이 다소간의 오차 범위 내에서 동일한 경우도 포함하는 것으로 상기 오차는 무시할 수 있을 정도로 작은 경우를 의미한다. 제어부(112)는 상기 SSD에 대해 적어도 하나의 쓰기 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에 서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단위 로 쓰기 요청을 수행한다. 일반적을 SSD는 기존의 자기 디스크와는 달리 읽기와 쓰기를 수행할 때 필요한 시간이 비대칭이라는 특징을 가 지고 있다. 따라서, SSD는 쓰기 연산을 얼마나 효율적으로 수행하는지 여부가 시스템 성능에 가장 큰 영향을 줄 수 있다. 따라서, SSD가 어느 정도 사용되어 안정적인 상태가 되었을 때, SSD에서 하나의 섹터에 대한 쓰기 요청에 필요 한 시간을 연산함으로써 SSD의 성능을 나타낼 수 있다. 상기 쓰기 요청에 필요한 시간은 한번의 병합 연산과 호스트 컴퓨터에서 SSD까지 섹터 단위의 데이터가 전송되 는 시간을 이용하여 나타낼 수 있다. 여기서, 병합 연산이란 하이브리드 매핑 기법을 사용하는 플래시 메모리에서 로그 블록이 전부 소모된 경우, 블 록 재활용을 위해 수행되는 기법을 의미한다. 이와 관련하여 도 2 내지 도 3을 참조하여 상기 병합 연산에 대해 상세히 설명하기로 한다. 도 2는 본 발명의 일실시예에 따라 SSD의 병합 연산 과정을 도시한 개념도이다. 일반적으로 플래시 메모리는 한 페이지에 데이터가 기록되면, 상기 데이터가 기록된 페이지가 속해있는 블록 전 체를 소거하기 전까지는 상기 페이지에 데이터를 기록할 수 없는 특징을 가지고 있다. 즉, 덮어 쓰기 (overwrite)가 불가능하다. 따라서, 플래시 메모리의 이러한 제약 사항을 극복하기 위해, FTL을 통한 다양한 알고리즘을 이용하는데, 보통 log-based 기법이 많이 사용된다. log-based 기법은 도 2에 도시된 바와 같이 데이터 블록(BLK)에 저장된 데이터가 업데이트되면, 업데이트된 데 이터를 로그 블록(Log)에 기록하는 방식을 의미한다. - 7 -
[0040] [0041] [0042] [0043] [0044] [0045] [0046] [0047] [0048] [0049] [0050] [0051] [0052] [0053] 도 2는 동일한 논리 블록에 데이터가 반복적으로 업데이트된 경우를 도시한 것으로 먼저, 도면 부호 210을 참조 하면, 데이터 블록(BLK)의 첫 번째 페이지와 두 번째 페이지에 저장된 데이터가 업데이트되는 경우, 로그 블록 (Log)은 out of order로 데이터를 저장하므로, 업데이트된 데이터는 로그 블록(Log)의 첫 번째 페이지와 두 번 째 페이지에 저장된다. 이때, 데이터 블록(BLK)의 첫 번째 페이지와 두 번째 페이지에 저장되어 있던 데이터는 무효(invalid)인 데이터가 된다. 그리고, 로그 블록(Log)의 첫 번째 페이지와 두 번째 페이지에 저장된 데이터가 업데이트되는 경우, 업데이트된 데이터는 로그 블록(Log)의 세 번째 페이지와 네 번째 페이지에 저장되고, 로그 블록(Log)의 첫 번째 페이지와 두 번째 페이지에 저장되어 있던 데이터는 무효(invalid)인 데이터가 된다. 만약, 로그 블록(Log)의 세 번째 페이지와 네 번째 페이지에 저장된 데이터가 업데이트되는 경우, 로그 블록 (Log)이 모두 소모되었기 때문에 플래시 메모리는 데이터 블록(BLK)과 로그 블록(Log)을 병합하여 빈 블록을 획 득한다. 여기서, 빈 블록(Free)은 그 성질이 데이터 블록에 해당하므로 상기 데이터들이 in-order로 저장된다. 이와 관련하여 도면 부호 220을 참조하면, 로그 블록(Log)의 세 번째 페이지와 네 번째 페이지에 저장되어 있는 데이터는 빈 블록(Free)의 첫 번째 페이지와 두 번째 페이지로 복사된다. 그리고 이때, 데이터 블록(BLK)의 세 번째 페이지와 네 번째 페이지에 저장되어 있던 데이터는 빈 블록(Free)의 세 번째 페이지와 네 번째 페이지에 복사된다. 그리고, 데이터 블록(BLK)과 로그 블록(Log)은 소거된다. 그 결과, 도면 부호 230에서 볼 수 있듯이 기존의 데이터 블록(BLK)과 로그 블록(Log)은 모두 빈 블록(Free)이 되고, 기존의 빈 블록(Free)이 데이터 블록(BLK)이 된다. 이상, 도 2를 참조하여 병합 연산 과정에 대해 설명하였다. 이하에서는 도 3을 참조하여 교환 병합 연산 과정 에 대해 설명하기로 한다. 도 3은 본 발명의 일실시예에 따라 SSD의 교환 병합 연산 과정을 도시한 개념도이다. 교환 병합 연산 과정은 도 2에 도시된 병합 연산 과정과는 달리 데이터 블록에 데이터가 연속적으로 업데이트되 는 경우에 수행되는 병합과정이다. 먼저, 도면 부호 310을 참조하면, 데이터 블록(BLK)의 첫 번째 페이지, 두 번째 페이지, 세 번째 페이지 및 네 번째 페이지에 저장되어 있는 데이터가 업데이트되는 경우, 업데이트된 데이터는 로그 블록(Log)에 out of order로 저장된다. 즉, 로그 블록(Log)의 첫 번째 페이지, 두 번째 페이지, 세 번째 페이지 및 네 번째 페이지 에 연속적으로 저장된다. 이때, 데이터 블록(BLK)의 첫 번째 페이지, 두 번째 페이지, 세 번째 페이지 및 네 번째 페이지에 저장되어 있던 데이터는 무효(invalid)인 데이터가 된다. 그리고, 로그 블록(Log)이 모두 소모되었기 때문에 플래시 메모리는 도면 부호 320에 도시된 바와 같이 기존의 로그 블록(Log)이 데이터 블록(BLK)으로, 기존의 데이터 블록(BLK)이 로그 블록(Log)으로 교환되도록 매핑 정보 를 업데이트한다. 이상으로 SSD의 병합 연산 과정을 설명하였다. 일반적으로 SSD에는 다수의 플래시 메모리 칩이 포함되어 있기 때문에 SSD가 어느 정도 사용되어 안정적인 상태가 되었을 때, 상기 SSD에서 쓰기 요청에 필요한 시간은 병합 연산에 소요되는 시간 정보가 포함될 수 있다. 이와 관련하여 상기 쓰기 요청에 필요한 시간은 하기의 수학식 1로 나타낼 수 있다. 수학식 1 [0054] - 8 -
[0055] 여기서, T SSD 는 SSD에서 하나의 섹터에 대한 쓰기 요청에 필요한 시간, T merge 는 SSD에서 병합 연산에 소요되는 시 간, S는 바이트 단위의 섹터의 크기 및 B는 SSD의 대역폭을 의미한다. [0056] 만약, 하나의 논리 블록의 크기만큼 쓰기가 요청되는 경우, 이때, 쓰기 요청에 필요한 시간은 하기의 수학식 2 와 같이 나타낼 수 있다. 수학식 2 [0057] [0058] [0059] 여기서, n은 논리 블록의 크기를 의미한다. 즉, 상기 수학식 2로부터 알 수 있듯이 논리 블록 단위로 쓰기 요 청을 수행하면, SSD에서 최대의 성능 얻을 수 있다. 그러나, 파일 시스템이나 데이터 베이스 시스템과 같이 데이터를 저장하고 관리하는 시스템에서는 쓰기 요청을 항상 논리 블록 단위로 수행할 수 없다. 따라서, 이 경우에는 쓰기 요청에 필요한 시간 T SSD 을 연산하기 위해, 쓰기 요청이 특정 논리 블록으로 향하는 비율을 고려해야 한다. 만약, 쓰기 요청이 특정 논리 블록으로 향하는 비율을 f라고 하고, 쓰기 요청의 수를 R이라고 하면, 쓰기 요청에 필요한 시간 T SSD 는 하기의 수학식 3으로 나타 낼 수 있다. 수학식 3 [0060] [0061] 결국, 쓰기 요청에 필요한 시간 T SSD 를 감소시켜 SSD의 성능을 향상시키기 위해서는 쓰기 요청이 논리 블록으로 향하는 비율 f을 증가시켜야 한다. [0062] 따라서, 본 발명의 일실시예에 따른 제어부(112)는 SSD에 적어도 하나의 쓰기 요청이 발생하는 경우, 분할부 (111)가 분할한 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청 을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행함으로써 쓰기 요청에 필요한 시간 T SSD 를 감 소시킬 수 있다. [0063] [0064] [0065] [0066] [0067] 이와 관련하여, 도 4를 참조하여 본 발명의 일실시예에 따른 SSD 관리 장치가 쓰기 요청을 할당하는 과정을 상 세히 설명하기로 한다. 도 4는 본 발명의 일실시예에 따라 SSD 관리 장치가 쓰기 요청을 할당하는 과정을 도시한 개념도이다. 분할부(111)는 SSD의 저장 공간을 도 4에 도시된 바와 같이 적어도 하나의 논리 블록(410)으로 분할한다. 여기서, SSD의 저장 공간에 A, B, C, D, E의 다섯 가지 파일이 저장되어 있다고 가정하자. 그리고, 상기 파일 들은 각각 A = {A1, A2, A3}, B = {B1, B2}, C = {C1, C2, C3, C4}, D = {D1}, E = {E1}의 섹터(또는 블록)로 구성되어 있다고 가정하자. 만약, SSD에 적어도 하나의 쓰기 요청(420)이 발생하는 경우, 제어부(112)는 적어도 하나의 논리 블록(410) 중 에서 어느 하나의 논리 블록(411)에 대해 적어도 하나의 쓰기 요청(420)을 할당하여 어느 하나의 논리 블록 (411) 단위로 쓰기 요청을 수행한다. - 9 -
[0068] [0069] [0070] [0071] [0072] [0073] [0074] [0075] [0076] [0077] [0078] [0079] [0080] [0081] [0082] [0083] [0084] [0085] 이때, 적어도 하나의 쓰기 요청(420) 중에서 A3, C4, C3은 이미 저장 공간에 기록되어 있던 섹터(또는 블록)이 므로 제어부(112)는 A3, C4, C3에 대해 어느 하나의 논리 블록(411)에 할당하지 않고, 제자리 갱신을 수행하며, 새롭게 기록될 A4, A5, C5, E2, E3, E4, E5에 대해서는 어느 하나의 논리 블록(411)에 할당하여 어느 하나의 논 리 블록(411) 단위로 쓰기 요청을 수행할 수 있다. 결국, 본 발명의 일실시예에 따른 SSD 관리 장치는 SSD에 다수의 쓰기 요청이 발생하는 경우, 상기 다수의 쓰기 요청을 특정 논리 블록에 할당하여 상기 특정 논리 블록의 단위로 상기 SSD에 대해 쓰기 요청을 수행함으로써 상기 수학식 3에서 f값을 증가시킬 수 있고, 이로 인해 쓰기 요청에 필요한 시간 T SSD 를 최소화할 수 있다. 본 발명의 일실시예에 따르면, 제어부(112)는 선택부(113)를 포함할 수 있다. 선택부(113)는 상기 적어도 하나의 논리 블록 중에서 상기 어느 하나의 논리 블록을 선택한다. 이때, 본 발명의 일실시예에 따르면, 선택부(113)는 상기 적어도 하나의 논리 블록 중에서 사용되지 않는 섹터 의 개수가 최대가 되는 논리 블록을 상기 어느 하나의 논리 블록으로 선택할 수 있다. 또한, 본 발명의 일실시예에 따르면, 선택부(113)는 상기 적어도 하나의 논리 블록을, 사용되는 섹터의 개수 또 는 사용되지 않는 섹터의 개수 중 어느 하나의 순서를 기준으로 정렬한 후 상기 SSD에 적어도 하나의 쓰기 요청 이 발생하는 경우, 상기 사용되지 않는 섹터의 개수가 최대가 되는 논리 블록을 상기 어느 하나의 논리 블록으 로 선택할 수 있다. 즉, 선택부(113)는 상기 적어도 하나의 논리 블록 중에서 사용되지 않는 섹터의 개수가 최대가 되는 논리 블록 을 선택하여, 사용되지 않는 섹터의 개수가 최대가 되는 논리 블록에 쓰기 요청들이 할당되도록 함으로써, 상기 수학식 3에서 f의 값을 증가시켜 SSD의 성능을 향상시킬 수 있다. 이때, 선택부(113)가 상기 어느 하나의 논리 블록을 선택하는 과정을 소위 Greedy-space 기법이라 명명 가능하 다. 본 발명의 일실시예에 따르면, 선택부(113)는 상기 적어도 하나의 논리 블록 각각에 대해, 사용되고 있는 섹터 의 개수를 기준 값(threshold)과 비교하여 상기 섹터의 개수가 상기 기준 값 미만인 논리 블록을 상기 어느 하 나의 논리 블록으로 선택할 수 있다. 이와 같은 방식을 소위 Clock-Space 기법이라 명명 가능하다. 이하에서는 도 5를 참조하여 선택부(113)가 상기 Clock-Space 기법을 이용하여 상기 어느 하나의 논리 블록을 선택하는 과정을 상세히 설명하기로 한다. 도 5는 본 발명의 일실시예에 따라 SSD 관리 장치가 논리 블록을 선택하는 과정을 도시한 개념도이다. 먼저, 도면 부호 510을 참조하면, 선택부(113)는 논리 블록 a에 대해, 상기 논리 블록 a에서 사용되고 있는 섹 터의 개수와 기준 값을 비교한다. 여기서, 논리 블록 a에서 사용되고 있는 섹터의 개수가 상기 기준 값 미만이 아니므로, 선택부(113)는 도면 부 호 520에 도시된 바와 같이 논리 블록 b에 대해, 상기 논리 블록 b에서 사용되고 있는 섹터의 개수와 기준 값을 비교한다. 이러한 비교 과정을 거쳐, 도면 부호 530에서 도시된 바와 같이 논리 블록 e는 상기 논리 블록 e에서 사용되고 있는 섹터의 개수가 기준 값 미만이므로, 선택부(113)는 상기 논리 블록 e를 상기 어느 하나의 논리 블록으로 선택한다. 결국, 선택부(113)는 분할부(111)가 분할한 적어도 하나의 논리 블록 중에서 사용되고 있지 않는 섹터의 개수가 가장 많은 논리 블록을 상기 어느 하나의 논리 블록으로 선택함으로써, 상기 수학식 3에서 f값을 감소시켜, SSD 성능을 향상시킬 수 있다. 이때, 본 발명의 일실시예에 따르면, 선택부(113)는 상기 적어도 하나의 논리 블록 전체에서 사용되고 있는 섹 터의 비율을 이용하여 상기 적어도 하나의 논리 블록 각각에서 사용되고 있는 섹터의 비율 중 최소 값을 연산하 고, 상기 최소 값을 기초로 상기 기준 값을 선정할 수 있다. 이와 관련하여 상기 적어도 하나의 논리 블록 전체에서 사용되고 있는 섹터의 비율과 상기 적어도 하나의 논리 블록 각각에서 사용되고 있는 섹터의 비율 중 최소 값 사이의 관계는 하기의 수학식 4로 나타낼 수 있다. - 10 -
수학식 4 [0086] [0087] [0088] [0089] [0090] 여기서, ASO는 상기 적어도 하나의 논리 블록 전체에서 사용되고 있는 섹터의 비율을 의미하고, BSO는 각각의 논리 블록에서 사용되고 있는 섹터의 비율 중 최소 값을 의미한다. 결국, 선택부(113)는 SSD의 저장 공간 사용률을 고려하여 상기 수학식 4로부터 BSO 값을 연산하여 이를 기초로 기준 값을 선정할 수 있다. 또한, 본 발명의 일실시예에 따르면, 선택부(113)는 ASO 값의 변화에 따라 상기 수학식 4를 이용하여 미리 연산 된 BSO 값이 저장된 테이블을 참조하여 상기 기준 값을 선정할 수 있다. 이와 관련하여, 하기의 표 1은 ASO 값이 0.1부터 0.9까지 변할 경우에 상기 수학식 4를 통해 연산된 BSO 값을 기재한 표이다. 표 1 [0091] ASO 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 BSO 0.1 0.1 0.1 0.1 0.2 0.3 0.45 0.6 0.8 [0092] [0093] [0094] [0095] [0096] [0097] [0098] [0099] 도 6은 본 발명의 일실시예에 따른 SSD 관리 방법을 도시한 순서도이다. 단계(S610)에서는 SSD의 저장 공간을 선정된 크기의 적어도 하나의 논리 블록으로 분할한다. 본 발명의 일실시예에 따르면, 단계(S610)에서는 상기 SSD와 매핑된 장치 파일에 대해 쓰기 요청의 크기를 변화 시키면서, 순차 쓰기를 수행할 경우의 제1 대역폭과 랜덤 쓰기를 수행할 경우의 제2 대역폭을 비교하여 상기 제 1 대역폭과 상기 제2 대역폭이 동일한 경우에 해당하는 쓰기 요청의 크기를 상기 선정된 크기로 결정할 수 있다. 단계(S620)에서는 상기 SSD에 대해 적어도 하나의 쓰기 요청이 발생하는 경우, 상기 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요청을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행한다. 결국, 본 발명의 일실시예에 따른 SSD 관리 방법은 SSD에 적어도 하나의 쓰기 요청이 발생하는 경우, 단계 (S610)에서 분할된 적어도 하나의 논리 블록 중에서 어느 하나의 논리 블록에 대해 상기 적어도 하나의 쓰기 요 청을 할당하여 상기 어느 하나의 논리 블록 단위로 쓰기 요청을 수행함으로써 상기 수학식 3에서 f 값을 증가시 켜 결과적으로 쓰기 요청에 필요한 시간 T SSD 를 감소시킬 수 있다. 본 발명의 일실시예에 따르면, 단계(S620)에서는 상기 적어도 하나의 논리 블록 중에서 상기 어느 하나의 논리 블록을 선택하는 단계를 포함할 수 있다. 이때, 본 발명의 일실시예에 따르면, 상기 어느 하나의 논리 블록을 선택하는 단계는 상기 적어도 하나의 논리 블록 중에서 사용되지 않는 섹터의 개수가 최대가 되는 논리 블록을 상기 어느 하나의 논리 블록으로 선택할 수 있다. 또한, 본 발명의 일실시예에 따르면, 상기 어느 하나의 논리 블록을 선택하는 단계는 상기 적어도 하나의 논리 블록을, 사용되는 섹터의 개수 또는 사용되지 않는 섹터의 개수 중 어느 하나의 순서를 기준으로 정렬한 후 상 - 11 -
기 SSD에 대해 상기 적어도 하나의 쓰기 요청이 발생하는 경우, 상기 사용되지 않는 섹터의 개수가 최대가 되는 논리 블록을 상기 어느 하나의 논리 블록으로 선택할 수 있다. [0100] [0101] [0102] [0103] [0104] [0105] [0106] 또한, 본 발명의 일실시예에 따르면, 상기 어느 하나의 논리 블록을 선택하는 단계는 상기 적어도 하나의 논리 블록 각각에 대해 사용되고 있는 섹터의 개수를 기준 값과 비교하여 상기 섹터의 개수가 상기 기준 값 미만인 논리 블록을 상기 어느 하나의 논리 블록으로 선택할 수 있다. 이때, 본 발명의 일실시예에 따르면, 상기 어느 하나의 논리 블록을 선택하는 단계는 상기 적어도 하나의 논리 블록 전체에서 사용되고 있는 섹터의 비율을 이용하여 상기 적어도 하나의 논리 블록 각각에서 사용되고 있는 섹터의 비율 중 최소 값을 연산하고, 상기 최소 값을 기초로 상기 기준 값을 선정할 수 있다. 이때, 본 발명의 일실시예에 따르면, 상기 최소 값은 상기 수학식 4를 이용하여 연산할 수 있다. 이상, 도 6을 참조하여 본 발명의 일실시예에 따른 SSD 관리 방법에 대해 설명하였다. 여기서, 본 발명의 일실 시예에 따른 SSD 관리 방법은 도 1 내지 도 5를 이용하여 설명한 SSD 관리 장치의 구성과 매우 유사하므로 이에 대한 상세한 설명은 생략하기로 한다. 본 발명에 따른 SSD 관리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴 퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행 하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포 함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도 록 구성될 수 있으며, 그 역도 마찬가지이다. 이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다. [0107] [0108] [0109] [0110] [0111] [0112] [0113] [0114] [0115] 도면의 간단한 설명 도 1은 본 발명의 일실시예에 따른 SSD 관리 장치의 구조를 도시한 도면이다. 도 2는 본 발명의 일실시예에 따라 SSD의 병합 연산 과정을 도시한 개념도이다. 도 3은 본 발명의 일실시예에 따라 SSD의 교환 병합 연산 과정을 도시한 개념도이다. 도 4는 본 발명의 일실시예에 따라 SSD 관리 장치가 쓰기 요청을 할당하는 과정을 도시한 개념도이다. 도 5는 본 발명의 일실시예에 따라 SSD 관리 장치가 논리 블록을 선택하는 과정을 도시한 개념도이다. 도 6은 본 발명의 일실시예에 따른 SSD 관리 방법을 도시한 순서도이다. <도면의 주요부분에 대한 부호의 설명> 110: SSD 관리 장치 111: 분할부 112: 제어부 113: 선택부 - 12 -
도면 도면1-13 -
도면2-14 -
도면3-15 -
도면4-16 -
도면5-17 -
도면6-18 -