따라서, 본 발명의 목적은 상기한 종래의 문제점을 극복할 수 있는 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른 검색방법을 제공하는 데 있다.
본 발명의 다른 목적은 플래시 메모리의 매핑테이블 검색을 하드웨어로 수행하는 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른 검색방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 플래시 메모리의 용량이 커지더라도 매핑테이블 검색을 빠르게 하여 검색 시간을 줄일 수 있는 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른 검색방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 시스템 퍼포먼스를 향상시킬 수 있는 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른 검색방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 검색 효율을 향상시킬 수 있는 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른 검색방법을 제공하는 데 있다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 구체화에 따라, 본 발명에 따른 플래시 메모리의 매핑 테이블 검색 시스템은, 상기 플래시 메모리에 저장되어 있는 매핑 테이블을 로딩하여 저장하기 위한 적어도 하나 이상의 랜덤액세스 메모리와; 상기 랜덤액세스 메모리에 로딩된 매핑테이블의 데이터를 하드웨어적으로 검색하기 위한 적어도 하나 이상의 서치엔진을 구비한다.
상기 매핑테이블 검색시스템은, 상기 랜덤액세스 메모리에의 매핑테이블 로딩 및 상기 서치엔진의 제어를 위한 제어부(CPU)를 구비할 수 있다. 또한, 상기 서치엔진은 상기 제어부로부터 입력되는 어드레스, 상기 서치엔진의 컨트롤 커맨드들을 저장하기 위한 다수의 레지스터들을 구비할 수 있다. 그리고, 상기 서치엔진은, 상기 제어부로부터 입력되는 시작 어드레스, 종료 어드레스, 및 검색 대상 데이터 값을 입력받아 상기 시작어드레스 내지 상기 종료어드레스 범위 내에서 상기 검색대상 데이터를 검색하고, 검색된 데이터의 대응되는 히트 어드레스를 출력할 수 있다. 상기 서치엔진은 상기 히트 어드레스 외에 검색 대상 데이터와 검색된 데이터의 매칭값을 더 출력할 수 있다.
상기 매핑테이블 검색시스템은, 액세스 속도 및 인터페이스 속도가 상대적으로 빠른 제1랜덤액세스 메모리 및 상기 제1랜덤 액세스 메모리보다 액세스속도 및 인터페이스 속도가 상대적으로 느린 제2랜덤메모리를 구비할 수 있으며, 상기 제1랜덤액세스 메모리는 SRAM이며, 상기 제2랜덤액세스 메모리는 DRAM일 수 있다.
상기 제어부는, 상기 제1랜덤액세스 메모리에는 상기 매핑테이블 데이터 중 중요도가 크거나, 용량이 적거나, 검색빈도수가 많은 제1매핑테이블 데이터를 로딩하고, 상기 제2랜덤액세스 메모리에는 상기 매핑테이블 데이터 중 중요도가 작거나, 용량이 많거나, 검색빈도수가 적은 제2매핑테이블 데이터를 로딩하는 구성을 가질 수 있다.
상기 매핑테이블 검색시스템은, 상기 제1랜덤액세스 메모리에 로딩된 상기 제1매핑테이블 데이터를 검색하기 위한 제1서치엔진과; 상기 제2랜덤액세스 메모리에 로딩된 상기 제2매핑테이블 데이터를 검색하기위한 제2서치엔진을 구비할 수 있으며, 상기 제1서치엔진 및 상기 제2서치엔진은 서로 독립적으로 동작될 수 있다.상기 제1매핑테이블 데이터 및 제2매핑테이블 데이터는 하나의 공통된 데이터 버스를 통하여 전송되어 상기 제1랜덤액세스 메모리 및 상기 제2랜덤액세스 메모리에 로딩될 수 있다. 또는, 상기 제1매핑테이블 데이터는 고속전송이 가능한 제1데이터버스를 통하여 전송되어 상기 제1랜덤액세스 메모리에 로딩되며, 상기 제2매핑테이블 데이터는 상기 제1데이터버스보다는 저속으로 데이터를 전송하는 제2데이터 버스를 통하여 전송되어 상기 제2랜덤액세스 메모리에 로딩될 수 있다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 다른 구체화에 따라, 본 발명에 따른 플래시 메모리를 이용한 시스템에서의 플래시 메모리의 매핑테이블 검색방법은, 제어를 통하여 상기 플래시 메모리의 매핑테이블을 액세스속도 및 인터페이스 속도의 차이가 있는 두 가지 종류의 랜덤액세스 메모리들에 매핑 테이블 데이터를 로딩하는 단계와; 상기 랜덤액세스 메모리들에 로딩된 매핑 테이블 데이터의 검색을 위한 어드레스 범위 및 검색대상 데이터를, 하드웨어적으로 구성되며 서로 독립적으로 동작하는 적어도 두 개의 서치엔진들에 입력하는 단계와; 상기 서치엔진들을 통하여 상기 랜덤액세스 메모리들에 로딩된 매핑테이블 데이터들 중에서 검색대상 데이터를 검색하고, 검색된 데이터에 대응되는 히트 어드레스를 출력하는 단계를 구비한다.
상기 매핑테이블의 로딩은, 중요도, 용량 및 검색빈도수에 따라 상기 매핑테이블 데이터를 구분하여 상기 랜덤액세스 메모리들에 나누어서 로딩할 수 있으며, 상기 매핑테이블 데이터 중 중요도가 크거나, 용량이 적거나, 검색빈도수가 많은 매핑테이블 데이터는 상대적으로 액세스 속도 및 인터페이스 속도가 빠른 제1랜덤액세스 메모리에 로딩하여 저장하고, 상기 매핑테이블 데이터 중 중요도가 작거나, 용량이 많거나, 검색빈도수가 적은 매핑테이블 데이터는 상대적으로 액세스 속도 및 인터페이스 속도가 느린 제2랜덤액세스 메모리에 로딩하여 저장할 수 있다.
상기 서치엔진들은 상기 제1랜덤액세스 메모리에 로딩된 매핑테이블 검색을 위한 제1서치엔진과, 상기 제2랜덤액세스 메모리에 로딩된 매핑테이블 검색을 위한 제2서치엔진을 구비하며, 상기 제1 및 상기 제2서치엔진들은 서로 독립적으로 동작 또는 제어될 수 있다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 또 다른 구체화에 따라, 본 발명에 따른 플래시 메모리를 이용한 시스템에서의 플래시 메모리의 매핑테이블 검색방법은, 상기 매핑테이블의 검색을 하드웨어적으로 별도로 구비되는 적어도 하나의 서치엔진을 통하여 수행함을 특징으로 한다.
상기 방법은 상기 매핑테이블의 데이터를 중요도, 검색빈도수, 및 용량에 따라 분리하여 적어도 두 개 이상의 랜덤액세스 메모리들에 나누어 로딩하고, 상기 랜덤액세스 메모리들 각각에 대응하여 구비되는 적어도 두 개 이상의 서치엔진들을 통하여, 로딩된 상기 매핑 테이블 데이터를 검색하는 것을 특징으로 할 수 있다.
상기한 구성에 따르면, 플래시 메모리 매핑테이블의 검색 효율 및 시스템 퍼포먼스를 향상시킬 수 있다.
이하에서는 본 발명의 바람직한 실시예가, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 철저한 이해를 제공할 의도 외에는 다른 의도 없이, 첨부한 도면들을 참조로 하여 상세히 설명될 것이다.
도 2는 본 발명의 일 실시예에 따른 플래시 메모리의 매핑테이블 검색시스템(100)의 블록도를 나타낸 것이다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 플래시 메모리의 매핑테이블 검색시스템(100)은 적어도 하나 이상의 랜덤액세스 메모리(120,130), 및 적어도 하나 이상의 서치엔진(search engine)(140,150)을 구비한다. 또한 상기 랜덤액세스 메모리(120,130) 및 상기 서치엔진(140,150)의 제어를 위한 제어부(CPU)(110)가 구비될 수 있다. 그리고 검색대상이 되는 플래시 메모리(300)가 구비된다. 또한 상기 플래시 메모리(300)의 컨트롤을 수행하는 플래시 컨트롤러(160)이 구비될 수 있다.
상기 랜덤액세스 메모리(120,130)는 SRAM이나 DRAM 등을 포함하며, 상기 플래시 메모리(300)의 매핑 테이블(mapping table)을 로딩하기 위한 것이다. 상기 랜덤액세스 메모리(120,130)는 SRAM이나 DRAM 중 어느 하나가 구비되어 상기 매핑 테이블을 로딩하는 것도 가능하며, SRAM 및 DRAM을 하나씩 구비하여 상기 매핑테이블 데이터를 분리하여 로딩하는 것도 가능할 수 있다. 매핑테이블 데이터는 하나의 공통된 데이터 버스(DB)를 통하여 전송되어 상기 랜덤액세스 메모리(120,130)에 로딩되는 구조를 가질 수 있다.
상기 랜덤액세스 메모리(120,130)가 하나로 구비되는 경우에는 상기 플래시 메모리(300)의 매핑테이블이 하나의 랜덤액세스 메모리에 모두 로딩되게 되고, 상기 랜덤액세스 메모리(120,130)가 두 개로 구비되는 경우는 상기 매핑테이블 데이터를 분리하여 로딩하는 것이 가능하다.
두 개의 랜덤액세스 메모리들(120,130)이 구비되는 경우에, 상기 랜덤액세스 메모리들(120,130)은, 액세스 속도 및 인터페이스 속도가 상대적으로 빠른 제1랜덤액세스 메모리(예를 들면, SRAM)(120) 및 상기 제1랜덤 액세스 메모리(120)보다 액세스속도 및 인터페이스 속도가 상대적으로 느린 제2랜덤메모리(예를 들면, DRAM)(130)로 구분될 수 있다. 상기 DRAM과 SRAM은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 그 구성, 동작, 및 특성이 잘 알려져 있으므로 자세한 설명은 생략하고 간단히 설명하면 다음과 같다.
DRAM은 PC의 주기억장치와 그래픽 카드의 메모리로 주로 사용이 되고 있는데, 일정한 주기로 리프레쉬(Refresh)라는 동작을 수행하여 데이터를 보존해 주어 야 하기 때문에 소모 전력이 큰 단점이 있지만 FLASH에 비해서 동작속도가 빠르고 SRAM에 비해서 집적도가 크기 때문에 현재 메모리들 중에서 시장이 가장 크고 널리 쓰이고 있다.
SRAM은 가장 먼저 개발이 된 메모리로서 일반적으로 DRAM보다는 속도가 빠른 것으로 알려져 있으며, 속도와 소모 전력에 따라서 저전력 SRAM(Low Power SRAM)과 고속도 SRAM(High Speed SRAM)으로 구분이 된다. 저전력 SRAM(Low Power SRAM)은 동적 속도는 좀 느리지만 기기가 동작을 하지 않는 대기모드(Standby Mode)에서 소모 전류를 극소화해서 주로 모바일 기기의 주기억장치로 쓰이고 있다. 고속도 SRAM(High Speed SRAM)이 쓰이는 곳은 빠른 연산속도를 필요로 하는 중대형 이상의 컴퓨터들(예를 들면 슈퍼 컴퓨터)의 주기억 장치로 사용이 된다.
상기 서치엔진(140,150)은 상기 랜덤액세스 메모리(120,130)에 로딩된 매핑테이블의 데이터를 하드웨어적으로 검색하기 위한 것으로, 소프트웨어가 아닌 하드웨어로 구성되며 상기 랜덤액세스 메모리(120,130)에 대응하여 구비될 수 있다.
즉, 상기 랜덤액세스 메모리(120,130)가 하나만 구비되는 경우에는 상기 서치엔진(140,150)도 하나가 구비되며, 상기 랜덤 액세스 메모리(120,130)가 두 개가 구비되면 이에 대응하여 두 개가 구비될 수 있다. 이 때 상기 서치엔진(140,150)은 두 개가 구비됨이 없이 하나의 서치엔진만을 구비하여 두 개의 랜덤액세스 메모리(120,130)를 서치하는 것도 가능하다.
상기 서치엔진은 상기 제1랜덤액세스 메모리(120)에 로딩된 상기 매핑테이블 데이터를 검색하기 위한 제1서치엔진(140)과, 상기 제2랜덤액세스 메모리(130)에 로딩된 매핑테이블 데이터를 검색하기위한 제2서치엔진(150)으로 구분될 수 있다. 상기 서치엔진(140,150)의 동작 및 그 구성은 도 3 및 도 4에서 설명한다.
상기 제어부(110)는 상기 랜덤액세스 메모리(120,130)에의 상기 매핑테이블 로딩 및 상기 서치엔진(140,150)의 제어를 위해 구비된다. 상기 제어부(110)는 상기 랜덤액세스 메모리(120,130) 및 상기 서치엔진(140,150)의 전반적인 동작을 제어하며, 상기 매핑 테이블 검색시스템(100) 전반을 제어한다. 특히 상기 서치엔진(140,150)의 검색동작을 위해 시작어드레스, 엔딩어드레스, 및 검색대상 데이터 값 등을 상기 서치엔진(140,150)에 인가한다.
상기 플래시 컨트롤러(160)는 상기 플래시 메모리(300)를 컨트롤하기 위해 구비되며, 상기 제어부(110)에 의해 제어되거나 또는 독립적으로 상기 플래시 메모리(300)를 컨트롤 한다.
도 3은 도 2의 서치엔진(140,150)의 블록도를 나타낸 것이다.
도 3에 도시된 바와 같이, 상기 서치엔진(140 or150)은 상기 제어부(110)로부터 입력되는 어드레스(SA,EA), 상기 서치엔진(140or150)의 컨트롤 커맨드들을 저장하기 위한 다수의 레지스터들을 구비하여 하드웨어적으로 구성된다.
상기 서치엔진(140 or150)은 상기 제어부로부터 입력되는 시작 어드레스(SA;Start Address), 종료 어드레스(EA;Ending Address), 및 검색 대상 데이터값(SV;Search Value)을 입력받아 상기 시작어드레스(SA) 내지 상기 종료어드레스(EA) 범위 내에서 상기 검색대상 데이터값(SV)을 검색하고, 검색된 데이터값(MV;Matching Value)에 대응되는 히트 어드레스(HA;Hit Addrass)를 출력한다. 여 기서 상기 서치엔진(140or150)은 상기 히트 어드레스(HA) 출력시에 상기 검색된 데이터값(MV)을 함께 출력하는 구성을 가질 수 있다.
상기 시작어드레스(SA)는 검색이 시작되는 어드레스이며, 상기 종료어드레스(EA)는 검색이 종료되는 어드레스를 의미할 수 있다. 또한 검색대상 데이터값(SV)은 검색하고자 하는 데이터의 값를 의미하며, 상기 히트어드레스(HA)는 상기 검색된 데이터값(MV)이 저장된 어드레스를 의미하며, 상기 검색된 데이터값(MV)은 상기 검색 대상 데이터값(SV)과 일치하는 데이터값을 의미한다.
도 4는 도 3의 서치엔진에 구비되는 레지스터들을 나타낸 것이다.
도 4에 도시된 바와 같이, 상기 서치엔진(140or150)은 시작어드레스(SA) 저장용 레지스터(SAR), 상기 종료어드레스(EA) 저장용 레지스터(EAR), 상기 검색대상 데이터값(SV) 저장용 레지스터(SVR), 상기 히트어드레스(HA) 저장용 레지스터(HAR), 검색된 데이터 값(MV) 저장용 레지스터(MVR), 및 상기 서치엔진의 컨트롤 커맨드 등 제어관련 데이터를 저장하기 위한 컨트롤 레지스터(CR)를 구비할 수 있다.
도 5 및 도 6은 도 3에서의 상기 랜덤액세스 메모리(120,130)에 매핑테이블(122,132)이 로딩되는 동작 및 로딩된 후의 서치동작을 설명하기 위한 블록도이다.
도 5에 도시된 바와 같이, 상기 플래시메모리(300)에 저장되어 있는 매핑테이블의 일부는 하나의 공통 데이터버스(DB)를 통하여 상기 제1랜덤액세스 메모리(120)에 로딩되고, 나머지는 상기 제2랜덤액세스 메모리(130)에 로딩된다.
도 6에 도시된 바와 같이, 상기 제1랜덤액세스 메모리(120)에 로딩되어 있는 매핑테이블 데이터(122)는 제1검색패스(SPA1)를 통하여 상기 제1서치엔진(140)에 의해 검색되고, 상기 제2랜덤액세스 메모리(130)에 로딩되어 있는 매핑 테이블 데이터(132)는 제2검색패스(SPA2)를 통하여 상기 제2서치엔진(150)에 의해 검색될 수 있다.
상술한 바와 같이, 매핑테이블의 검색을 하드웨어로 처리함에 따라, 소프트 웨어를 이용함에 따른 오버헤드(overhead)를 줄이고 매핑 테이블 검색 속도를 빠르게 할 수 있게 된다.
상기 플래시메모리(300)의 용량이 커짐에 따라 이에 따른 매핑테이블의 용량도 커지고 있다. 이에 따라, 상술한 도 2 내지 도 6에서와 같이 하드웨어 서치엔진(140,150)을 이용하여 상기 매핑 테이블의 검색을 수행한다하더라도 많은 시간이 소요되는 경우가 있다. 특히, 데이터 블록 매핑 테이블의 경우에 상기 플래시 메모리(300)의 전체 용량이 증가함에 따라 상기 매핑테이블의 용량이 커진다. 최근 플래시 메모리(300)가 하드디스크(HDD)를 대체하고 있는 상황에서 상기 플래시 메모리 용량증가에 따른 매핑테이블 검색시간의 증가는 시스템 성능에 큰 영향을 끼치게 된다. 이런 경우, 상기 데이터 블록 매핑 테이블 또는 전체 매핑 테이블을 두 부분으로 나누어서, 각각을 상기 제1랜덤액세스 메모리(120) 및 상기 제2랜덤액세스 메모리(130)에 분리 로딩하고, 독립적으로 동작하는 서치엔진들을 이용하면 훨씬 빠른 속도로 매핑 테이블 검색을 수행하는 것이 가능해진다. 예를 들면, 빠른 응답이 요구되거나, 용량이 상대적으로 작은 매핑테이블 데이터와 빠른 응답이 요 구되지 않거나 용량이 상대적으로 큰 매핑 테이블 데이터를 분리하여 로딩할 수 있다. 이는 도 7에서 설명한다.
도 7은 매핑테이블을 중요도, 용량, 검색빈도수에 따라 나누어 로딩하는 경우의 예를 나타낸 블록도이다.
도 7에 도시된 바와 같이, 상기 제1랜덤액세스 메모리(120)에는 상기 매핑테이블 데이터 중 중요도가 크거나, 용량이 적거나, 검색빈도수가 많은 제1매핑테이블 데이터, 예를 들면, 페이지 매핑 테이블(page mapping table) 데이터(122a)를 로딩할 수 있다.
또한, 상기 제2랜덤액세스 메모리(130)에는 상기 매핑테이블 데이터 중 중요도가 작거나, 용량이 많거나, 검색빈도수가 적은 제2매핑테이블 데이터, 예를 들면, 배드블록 매핑테이블(bad block mapping table) 데이터(132b), 논리-물리 매핑테이블(Logical to Physical mapping table)데이터(132a)를 로딩할 수 있다. 상기 제1랜덤액세스 메모리(120)에의 상기 제1매핑테이블 데이터의 로딩 및 상기 제2랜덤액세스 메모리(130)에의 상기 제2매핑 테이블 데이터의 로딩은 상기 제어부(110)의 제어에 의해 수행될 수 있다.
그리고 상기 제1매핑 테이블 데이터(122a)는 상기 제1서치엔진(140)을 통하여 검색동작을 수행하고, 상기 제2매핑 테이블 데이터(132a,132b)는 상기 제2서치엔진을 통하여 검색을 수행하면, 하드웨어 병렬서치(parallel search)가 가능하여 검색시간단축으로 전체 시스템의 성능을 향상시킬 수 있다.
도 8은 본 발명의 다른 실시예에 따른 매핑 테이블 검색시스템의 블록도로써 도 2 내지 도 7에서 설명한 매핑테이블 검색시스템과 달리 두개의 데이터 전송버스를 구비하는 경우를 나타낸 것이다.
도 8에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 매핑 테이블 검색시스템은 상기 매핑 테이블 데이터의 전송을 위해 두개의 데이터 버스(AHB,APB)를 구비한다.
상기 두개의 데이터 버스들(AHP,APB) 중 하나인 제1데이터버스(AHB)는 고속전송을 위한 데이터 버스이며, 나머지인 제2데이터버스(APB)는 저속 전송을 위한 데이터 버스일 수 있다.
이때 상기 제1매핑테이블 데이터(122a)는 고속전송이 가능한 제1데이터버스(AHB)를 통하여 전송되어 상기 제1랜덤액세스 메모리(120)에 로딩되게 되며, 상기 제2매핑테이블 데이터(132a,132b)는 상기 제1데이터버스(AHB)보다는 저속으로 데이터를 전송하는 제2데이터 버스(APB)를 통하여 전송되어 상기 제2랜덤액세스 메모리(130)에 로딩되는 구조를 가질 수 있다.
상기 데이터 버스구조를 제외한 나머지 구성 및 그 동작은 도 2 내지 도 7에서 설명한 바와 동일하므로 그 설명을 생략한다.
상술한 바와 같이, 매핑테이블의 검색을 하드웨어로 처리함에 따라, 소프트 웨어를 이용함에 따른 오버헤드(overhead)를 줄이고 매핑 테이블 검색 속도를 빠르게 할 수 있게 된다. 매핑테이블을 두가지 종류로 구분하여 로딩함에 따라 하드웨어 병렬서치(parallel search)가 가능하여 검색시간단축으로 전체 시스템의 성능을 향상시킬 수 있다.
상기한 실시예의 설명은 본 발명의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 발명을 한정하는 의미로 해석되어서는 안될 것이다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다.