KR20100128120A - Data storage device and data storing method thereof - Google Patents
Data storage device and data storing method thereof Download PDFInfo
- Publication number
- KR20100128120A KR20100128120A KR1020090046575A KR20090046575A KR20100128120A KR 20100128120 A KR20100128120 A KR 20100128120A KR 1020090046575 A KR1020090046575 A KR 1020090046575A KR 20090046575 A KR20090046575 A KR 20090046575A KR 20100128120 A KR20100128120 A KR 20100128120A
- Authority
- KR
- South Korea
- Prior art keywords
- buffer memory
- data
- main memories
- job
- channels
- Prior art date
Links
Images
Classifications
-
- 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/10—Program control for peripheral devices
-
- 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
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
본 발명은 데이터 저장 장치에 관한 것으로, 좀 더 구체적으로는 반도체를 메인 스토리지로 채택한 데이터 저장 장치 및 그것의 데이터 저장 방법에 관한 것이다.The present invention relates to a data storage device, and more particularly, to a data storage device employing a semiconductor as a main storage and a data storage method thereof.
정보화 사회의 도래와 함께 개인이 저장하고 이동해야 할 데이터의 양도 폭발적으로 늘어나고 있다. 이와 같은 정보 저장매체의 수요 증가로 인해, 다양한 종류의 개인용 데이터 저장 장치들이 개발되고 있다. With the advent of the information society, the amount of data that individuals need to store and move is exploding. Due to the increased demand for information storage media, various types of personal data storage devices have been developed.
데이터 저장 장치들 중에서도 하드디스크 드라이브(hard disk drive; HDD)는, 높은 기록 밀도, 높은 데이터 전송 속도, 빠른 데이터 접근 시간(access time), 및 낮은 가격 등의 장점으로 인해 널리 사용되고 있다. 하드디스크 드라이브는 플래터(platter)와, 플래터를 구동하기 위한 복잡한 기계적 부품들로 구성된다. 따라서, 조그만 충격과 진동에도 고장이 날 수 있는 문제점이 있다. Among data storage devices, hard disk drives (HDDs) are widely used due to advantages such as high recording density, high data transfer speed, fast data access time, and low cost. Hard disk drives consist of a platter and complex mechanical components for driving the platter. Therefore, there is a problem that even a small shock and vibration can occur.
최근 들어서는 하드디스크 드라이브를 대신하는 데이터 저장 장치로서 반도체 디스크(Solid State Disk 또는 Solid State Drive, 이하 SSD라 칭함) 장치가 개 발되고 있다. SSD는 반도체 메모리를 메인 스토리지로서 채택한 데이터 저장 장치이다. SSD는 하드디스크 드라이브와 달리 플래터와 플래터를 구동하기 위한 기계적 부품들이 구비되지 않는다. 따라서, SSD는 하드디스크 드라이브에 비해 기계적 구동시간과 지연시간(latency)을 줄일 수 있고, 고속의 읽기/기록 동작을 수행할 수 있다. 그리고 SSD는 지연 시간 및 기계적 마찰로 인한 오류를 줄일 수 있기 때문에, 읽기/기록 동작의 신뢰성을 향상시킬 수 있는 장점이 있다. 또한, 작동시 열과 소음이 거의 발생하기 않고 외부 충격에 강하기 때문에, 기존의 하드디스크 드라이브에 비하여 휴대용 기기에 적합한 데이터 저장 장치로서 높이 평가되고 있다. Recently, as a data storage device replacing a hard disk drive, a semiconductor disk (Solid State Disk or Solid State Drive, or SSD) device has been developed. SSDs are data storage devices employing semiconductor memory as main storage. SSDs, unlike hard disk drives, do not have platters and mechanical components to drive them. Accordingly, the SSD can reduce the mechanical driving time and the latency compared to the hard disk drive, and can perform a high speed read / write operation. In addition, since SSDs can reduce errors caused by delay time and mechanical friction, an SSD can improve reliability of read / write operations. In addition, since it hardly generates heat and noise during operation and is resistant to external shocks, it is highly regarded as a data storage device suitable for portable devices compared to a conventional hard disk drive.
본 발명의 목적은 채널 이용도 및 데이터 저장 성능을 향상시킬 수 있는 데이터 저장 장치 및 그것의 데이터 저장 방법을 제공하는 데 있다. It is an object of the present invention to provide a data storage device and a data storage method thereof that can improve channel utilization and data storage performance.
상기의 과제를 이루기 위하여 본 발명에 의한 데이터 저장 장치는, 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들; 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하는 것을 특징으로 한다.In accordance with an aspect of the present invention, a data storage device includes: a plurality of main memories connected to a plurality of channels and a plurality of ways; A buffer memory for temporarily storing a plurality of data to be recorded in the main memories; And a controller configured to store the plurality of data in the buffer memory so as to correspond to channel and way information of the main memories.
이 실시예에 있어서, 상기 컨트롤러는 상기 메인 메모리들에 대한 기록 동작시, 상기 임시 저장된 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들 로 분산시키는 것을 특징으로 한다.In this embodiment, the controller is configured to distribute the plurality of temporarily stored data to the plurality of channels and the plurality of ways during a write operation on the main memories.
이 실시예에 있어서, 상기 컨트롤러는 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 버퍼 메모리의 논리 어드레스 및 물리 어드레스를 맵핑하는 것을 특징으로 한다.In this embodiment, the controller is configured to map the logical address and the physical address of the buffer memory to correspond to the channel and way information of the main memories.
이 실시예에 있어서, 상기 버퍼 메모리는 복수 개의 뱅크들과 복수의 볼륨들의 교차 영역에 배치된 복수의 섹터들을 포함하는 것을 특징으로 한다.In this embodiment, the buffer memory is characterized in that it comprises a plurality of sectors disposed in the intersection region of the plurality of banks and the plurality of volumes.
이 실시예에 있어서, 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되는 것을 특징으로 한다.In this embodiment, each of the volumes corresponds to a respective channel connected to the main memories, and each of the banks corresponds to a respective way connected to the main memories.
이 실시예에 있어서, 상기 컨트롤러는 데이터가 기록될 각각의 메인 메모리의 논리 어드레스에 응답해서 상기 논리 어드레스에 대응되는 볼륨 및 뱅크를 결정하고, 상기 결정된 볼륨 및 뱅크에 대응되는 섹터에 상기 데이터를 저장하는 것을 특징으로 한다.In this embodiment, the controller determines a volume and a bank corresponding to the logical address in response to a logical address of each main memory in which data is to be written, and stores the data in a sector corresponding to the determined volume and bank. Characterized in that.
이 실시예에 있어서, 상기 섹터들 각각의 논리 어드레스는, 상기 볼륨들 중 하나와 상기 뱅크들 중 하나에 대응되는 캐시라인으로 표시되는 것을 특징으로 한다.In this embodiment, the logical address of each of the sectors is represented by a cache line corresponding to one of the volumes and one of the banks.
이 실시예에 있어서, 상기 컨트롤러는 상기 캐시라인과, 상기 캐시라인에 대응되는 볼륨 및 뱅크의 맵핑 정보를 저장하는 것을 특징으로 한다.In this embodiment, the controller is configured to store mapping information of the cache line and a volume and a bank corresponding to the cache line.
이 실시예에 있어서, 상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 버퍼 메모리의 논리 어드레스들은 복수의 캐시웨이들을 구성하며, 상기 캐시웨이들 각각은 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 캐시라인들을 포함하는 것을 특징으로 한다.In this embodiment, when N channels and M ways are connected to the plurality of main memories, logical addresses of the buffer memory constitute a plurality of cacheways, each of which has N volumes. And N × M cache lines corresponding to M banks.
이 실시예에 있어서, 상기 컨트롤러는 적어도 하나의 캐시웨이에 대응되는 복수의 데이터가 상기 메인 메모리들에서 저장되도록 제어하는 것을 특징으로 한다.In this embodiment, the controller controls a plurality of data corresponding to at least one cache way to be stored in the main memories.
이 실시예에 있어서, 상기 컨트롤러는 상기 캐시라인에 대응되는 섹터에 저장된 데이터를 대응되는 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 것을 특징으로 한다.In this exemplary embodiment, the controller may register a write operation for writing data stored in a sector corresponding to the cache line to a corresponding main memory in a unit of a job unit.
이 실시예에 있어서, 상기 컨트롤러는 상기 등록된 기록 오퍼레이션을 큐잉하여 잡유닛 플레이트를 구성하는 것을 특징으로 한다.In this embodiment, the controller is configured to queue the registered recording operation to construct a job unit plate.
이 실시예에 있어서, 상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 잡유닛 플레이트에는 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 잡유닛들이 포함되는 것을 특징으로 한다.In this embodiment, when N channels and M ways are connected to the plurality of main memories, the job unit plate includes N × M job units corresponding to N volumes and M banks. It is characterized by.
이 실시예에 있어서, 상기 컨트롤러는 적어도 하나의 잡유닛 플레이트 단위로 상기 메인 메모리들에 대한 기록 오퍼레이션들을 실행하는 것을 특징으로 한다.In this embodiment, the controller performs write operations for the main memories in units of at least one job unit plate.
이 실시예에 있어서, 상기 실행된 기록 오퍼레이션들 각각은 상기 메인 메모리들에 접속된 각각의 채널과 각각의 웨이에 대응되는 것을 특징으로 한다.In this embodiment, each of the executed write operations corresponds to each channel and each way connected to the main memories.
이 실시예에 있어서, 상기 잡유닛들 각각은 대응되는 볼륨 및 뱅크에 따라 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 것을 특징으로 한다.In this embodiment, each of the job units is queued at a unique position on the job unit plate according to the corresponding volume and bank.
이 실시예에 있어서, 상기 컨트롤러는 상기 큐잉 동작시 동일한 볼륨 및 동 일한 뱅크에 대응되는 복수의 잡유닛들을 상기 잡유닛 플레이트 상의 동일한 위치에 적층시키는 것을 특징으로 한다.In this embodiment, the controller is characterized in that for stacking a plurality of job units corresponding to the same volume and the same bank at the same position on the job unit plate during the queuing operation.
이 실시예에 있어서, 상기 컨트롤러는, 상기 메인 메모리들의 채널 및 웨이 정보를 근거로 하여 상기 메인 메모리들과 상기 버퍼 메모리의 기록 내지 읽기동작을 제어하는 버퍼 메모리 제어부를 포함하는 것을 특징으로 한다.The controller may include a buffer memory controller configured to control a write or read operation of the main memories and the buffer memory based on channel and way information of the main memories.
이 실시예에 있어서, 상기 버퍼 메모리 제어부는 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 상기 복수의 데이터가 상기 버퍼 메모리에 저장되는 위치를 관리하는 버퍼 매니저; 그리고 상기 버퍼 메모리에 저장된 상기 복수의 데이터가 상기 메인 메모리들에 저장되는 타이밍을 스케쥴링하는 스케쥴러를 포함하는 것을 특징으로 한다.The buffer memory controller may include a buffer manager configured to manage a location where the plurality of data is stored in the buffer memory to correspond to the plurality of channels and the plurality of ways; And a scheduler for scheduling timing at which the plurality of data stored in the buffer memory is stored in the main memories.
상기의 과제를 이루기 위하여 본 발명에 의한 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법은, 상기 메인 메모리들에 저장될 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 버퍼 메모리에 저장하는 단계; 상기 버퍼 메모리에 저장된 데이터가 상기 복수의 채널들과 상기 복수의 웨이들에 분산될 수 있도록 상기 메인 메모리들에 대한 기록 오퍼레이션들을 스케쥴링 하는 단계; 그리고 상기 스케쥴링 결과에 응답해서 상기 버퍼 메모리에 저장된 상기 복수의 데이터를 상기 복수의 메인 메모리들로 기록하는 단계를 포함하는 것을 특징으로 한다.In order to achieve the above object, a data storage method of a data storage device having a plurality of main memories electrically connected to a plurality of channels and a plurality of ways according to the present invention includes a plurality of data to be stored in the main memories. Storing a plurality of channels in a buffer memory to correspond to the plurality of channels and the plurality of ways; Scheduling write operations for the main memories so that data stored in the buffer memory can be distributed over the plurality of channels and the plurality of ways; And writing the plurality of data stored in the buffer memory to the plurality of main memories in response to the scheduling result.
이 실시예에 있어서, 상기 복수의 데이터를 상기 버퍼 메모리에 분산하는 단계는, 상기 메인 메모리들의 논리 어드레스들에 응답해서 상기 논리 어드레스들에 대응되는 상기 버퍼 메모리의 볼륨들 및 뱅크들을 결정하는 단계; 그리고 상기 결정된 볼륨들 및 뱅크들에 대응되는 복수의 섹터들에게 상기 복수의 데이터를 저장하는 단계를 포함하는 것을 특징으로 한다.In this embodiment, distributing the plurality of data into the buffer memory may include determining volumes and banks of the buffer memory corresponding to the logical addresses in response to logical addresses of the main memories; And storing the plurality of data in a plurality of sectors corresponding to the determined volumes and banks.
이 실시예에 있어서, 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되는 것을 특징으로 한다.In this embodiment, each of the volumes corresponds to a respective channel connected to the main memories, and each of the banks corresponds to a respective way connected to the main memories.
이 실시예에 있어서, 상기 섹터들의 논리 어드레스들과, 상기 섹터들의 볼륨 및 뱅크 정보들을 저장하는 단계를 더 포함하는 것을 특징으로 한다.In this embodiment, the method further comprises storing logical addresses of the sectors, volume and bank information of the sectors.
이 실시예에 있어서, 상기 복수의 데이터를 상기 복수의 메모리들에 저장하는 단계는, 상기 버퍼 메모리에 저장된 각각의 데이터를 대응되는 메인 메모리로 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계; 상기 잡유닛에 대응되는 볼륨 및 뱅크 정보를 근거로 하여 잡유닛 플레이트가 구성될 때까지 상기 잡유닛을 큐잉하는 단계; 그리고 상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 병렬로 실행하는 단계를 포함하는 것을 특징으로 한다.The storing of the plurality of data in the plurality of memories may include: registering, in a unit of a job unit, a recording operation for recording each data stored in the buffer memory into a corresponding main memory; Queuing the job unit until a job unit plate is constructed based on volume and bank information corresponding to the job unit; And when the job unit plate is configured, executing a plurality of write operations corresponding to the configured job unit plate in parallel.
이 실시예에 있어서, 상기 잡유닛 플레이트는 상기 복수의 채널들과 상기 복수의 웨이들에 대응되는 복수의 잡유닛들을 포함하는 것을 특징으로 한다.In this embodiment, the job unit plate is characterized in that it comprises a plurality of job units corresponding to the plurality of channels and the plurality of ways.
이 실시예에 있어서, 상기 복수의 기록 오퍼레이션들은 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되는 것을 특징으로 한다.In this embodiment, the plurality of write operations correspond to the plurality of channels and the plurality of ways.
이 실시예에 있어서, 상기 각각의 잡유닛은 대응되는 볼륨 및 뱅크에 따라서 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 것을 특징으로 한다.In this embodiment, each of the job units is queued at a unique position on the job unit plate according to the corresponding volume and bank.
이 실시예에 있어서, 상기 잡유닛을 큐잉하는 단계는 동일한 볼륨 정보 및 동일한 뱅크 정보를 갖는 잡유닛들을 상기 잡유닛 플레이트 상에서 동일한 위치에 적층하는 단계를 포함하는 것을 특징으로 한다.In this embodiment, the step of queuing the job unit comprises stacking job units having the same volume information and the same bank information at the same position on the job unit plate.
상기의 과제를 이루기 위하여 본 발명에 의한 데이터 저장 장치의 데이터 저장 방법은, 호스트로부터 입력된 기록 커멘드에 응답해서 버퍼 메모리의 캐시라인을 요청하는 단계; 상기 버퍼 메모리에 빈 캐시라인이 존재하는 경우, 상기 빈 캐시라인에 상기 데이터를 임시 저장하는 단계; 상기 버퍼 메모리에 빈 캐시라인이 존재하지 않는 경우, 빅팀 캐시라인을 선정하고 플러시를 수행하는 단계; 상기 플러시된 캐시라인의 데이터를 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계; 상기 잡유닛에 대응되는 볼륨 및 뱅크 정보를 근거로 하여 잡유닛 플레이트가 구성될 때까지 상기 잡유닛을 큐잉하는 단계; 그리고 상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들에서 실행하는 단계를 포함하는 것을 특징으로 한다.According to an aspect of the present invention, a data storage method of a data storage device includes: requesting a cache line of a buffer memory in response to a write command input from a host; When the empty cache line exists in the buffer memory, temporarily storing the data in the empty cache line; Selecting an empty team cache line and performing a flush when there is no empty cache line in the buffer memory; Registering a write operation for recording the data of the flushed cache line in a main memory in a unit of a job unit; Queuing the job unit until a job unit plate is constructed based on volume and bank information corresponding to the job unit; And when the job unit plate is configured, executing a plurality of write operations corresponding to the configured job unit plate in a plurality of main memories connected to a plurality of channels and a plurality of ways. .
상기의 과제를 이루기 위하여 본 발명에 의한 컴퓨팅 시스템은, 호스트; 그리고 상기 호스트로부터 입력된 기록 커멘드에 응답해서 데이터를 기록하는 데이터 저장 장치를 포함한다. 여기서, 상기 데이터 저장 장치는 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들; 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고 상기 메인 메모리들의 채널 및 웨이 정보 에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하는 것을 특징으로 한다.In order to achieve the above object, a computing system according to the present invention includes a host; And a data storage device for recording data in response to a write command input from the host. The data storage device may include: a plurality of main memories connected to a plurality of channels and a plurality of ways; A buffer memory for temporarily storing a plurality of data to be recorded in the main memories; And a controller configured to store the plurality of data in the buffer memory so as to correspond to channel and way information of the main memories.
상기의 과제를 이루기 위하여 본 발명에 의한 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법을 컴퓨터에서 실행시키기 위한 프로그램으로 기록하고 컴퓨터로 읽을 수 있는 저장 매체는, 상기 메인 메모리들에 저장될 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 버퍼 메모리에 저장하는 단계; 상기 버퍼 메모리에 저장된 데이터가 상기 복수의 채널들과 상기 복수의 웨이들에 분산될 수 있도록 상기 메인 메모리들에 대한 기록 오퍼레이션들을 스케쥴링 하는 단계; 그리고 상기 스케쥴링 결과에 응답해서 상기 버퍼 메모리에 저장된 상기 복수의 데이터를 상기 복수의 메인 메모리들로 기록하는 단계를 포함하는 것을 특징으로 한다.In order to achieve the above object, a data storage method of a data storage device having a plurality of main memories electrically connected to a plurality of channels and a plurality of ways according to the present invention is recorded as a program for executing on a computer and then transferred to a computer. The readable storage medium may include: storing a plurality of data to be stored in the main memories in a buffer memory to correspond to the plurality of channels and the plurality of ways; Scheduling write operations for the main memories so that data stored in the buffer memory can be distributed over the plurality of channels and the plurality of ways; And writing the plurality of data stored in the buffer memory to the plurality of main memories in response to the scheduling result.
이상과 같은 본 발명에 의하면 플래시 메모리의 채널 및 웨이 구조를 고려하여 버퍼 메모리에 데이터를 분산 저장 할 수 있게 된다. 그리고, 버퍼 메모리에 분산 저장된 데이터가 복수의 채널들과 복수의 웨이들에 접속된 복수의 플래시 메모리들에 분산되어 저장될 수 있도록 스케쥴링할 수 있게 된다. 그 결과, 데이터 저장 장치의 채널 이용도 및 데이터 저장 성능이 효과적으로 향상된다. According to the present invention as described above it is possible to distribute and store data in the buffer memory in consideration of the channel and way structure of the flash memory. The data distributed in the buffer memory may be scheduled to be distributed and stored in a plurality of flash memories connected to a plurality of channels and a plurality of ways. As a result, channel utilization and data storage performance of the data storage device are effectively improved.
본 발명의 예시적인 실시예들이 참조 도면들에 의거하여 이하 상세히 설명될 것이다. 그러나, 아래에서 설명될 본 발명의 데이터 저장 장치의 회로 구성 및 동작은 예를 들어 설명한 것에 불과하다. 본 발명의 데이터 저장 장치는 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다. Exemplary embodiments of the invention will be described in detail below on the basis of reference drawings. However, the circuit configuration and operation of the data storage device of the present invention to be described below are merely described by way of example. The data storage device of the present invention can be variously changed and changed without departing from the technical spirit of the present invention.
본 발명의 데이터 저장 장치는 반도체 메모리 중에서도 플래시 메모리를 메인 스토리지로서 채택한 SSD가 예시적으로 설명될 것이다. 본 발명의 데이터 저장 장치는 메인 스토리지인 플래시 메모리의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리에 데이터를 저장한다. 또한, 본 발명의 데이터 저장 장치는, 버퍼 메모리에 저장된 데이터가 복수의 채널들과 복수의 웨이들에 접속된 복수의 플래시 메모리들에 분산되어 저장될 수 있도록 호스트로부터 제공된 커멘드들을 스케쥴링한다. 그 결과, 데이터 저장 장치의 채널 이용도와 데이터 저장 성능이 향상된다. As the data storage device of the present invention, an SSD employing a flash memory as a main storage among semiconductor memories will be exemplarily described. The data storage device of the present invention stores data in a buffer memory based on a channel and a way structure of a flash memory as main storage. In addition, the data storage device of the present invention schedules commands provided from the host so that data stored in the buffer memory can be distributed and stored in a plurality of flash memories connected to a plurality of channels and a plurality of ways. As a result, channel utilization and data storage performance of the data storage device are improved.
도 1은 본 발명에 따른 데이터 저장 장치(500, 이하 SSD라 칭함) 및 그것을 포함하는 메모리 시스템(1000)의 구성을 보여주는 블록도이다. 1 is a block diagram illustrating a configuration of a data storage device 500 (hereinafter referred to as an SSD) and a
도 1을 참조하면, 본 발명의 메모리 시스템(1000)은 SSD(data storage device; 500)와 호스트(900)로 구성될 수 있다. SSD(500)는 SSD 컨트롤러(SSD controller; 100), 버퍼 메모리(buffer memory; 200), 및 데이터 저장부(300, 도 1에는 storage로 표시됨)로 구성될 수 있다. Referring to FIG. 1, the
버퍼 메모리(200)는 SSD 컨트롤러(100)와 데이터 저장부(300) 사이에 송수신되는 데이터와, SSD 컨트롤러(100)와 호스트(900) 사이에 송수신되는 데이터를 임시로 저장할 수 있다. SSD 컨트롤러(100) 내부에는 버퍼 메모리(200)의 데이터 입출력을 제어하는 버퍼 메모리 제어 기능이 구비될 수 있다. 이는 버퍼 메모리(200) 의 데이터 입출력 동작이 SSD 컨트롤러(100)를 통해 수행될 수 있음을 의미한다. 버퍼 메모리(200)는 도 1과 같이 SSD 컨트롤러(100) 외부에 구비될 수도 있고, SSD 컨트롤러(100) 내부에 구비될 수도 있다. 버퍼 메모리는 DRAM 또는 SRAM과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다. The
데이터 저장부(300)는 SSD(500)의 메인 스토리지이다. 데이터 저장부(300)는 하드 디스크 드라이브(HDD)의 플래터(platter) 대신에 반도체 메모리 칩들을 사용하여 데이터를 저장한다. 데이터 저장부(300)는 불휘발성 메모리 또는 휘발성 메모리로 구성될 수 있다. SSD 컨트롤러(100)와 데이터 저장부(300) 사이에는 복수의 채널들(예를 들면, N개)이 구성될 수 있다. 그리고, 각각의 채널에는 복수 개의 웨이(예를 들면, M개)가 구성될 수 있다. 채널 및 웨이에 대한 상세 구성은 도 3을 참조하여 상세히 설명될 것이다.The
본 발명에서는 데이터 저장부(300)가 불휘발성 메모리인 플래시 메모리로 구성되는 경우에 대해 예시적으로 설명될 것이다. 그러나, 본 발명에서 데이터 저장부(300)에 적용되는 메모리는 특정 종류 및 특정 형태에만 국한되지 않고 다양한 형태로 구성될 수 있다. 예를 들면, 데이터 저장부(300)에 적용되는 메모리는 플래시 메모리뿐만 아니라 MRAM, PRAM 등의 불휘발성 메모리를 포함할 수 있다. 또한, 데이터 저장부(300)에 적용되는 메모리는 DRAM 등과 같은 휘발성 메모리를 포함할 수 있다. 데이터 저장부(300)는, 적어도 하나의 불휘발성 메모리와 적어도 하나의 휘발성 메모리가 혼합된 형태로 구성될 수도 있고, 적어도 두 종류 이상의 불휘발성 메모리들이 혼합된 형태로 구성될 수도 있다. In the present invention, a case in which the
또한, 데이터 저장부(300)를 구성하는 메모리들의 각 메모리 셀에 저장되는 데이터 비트 수는 다양한 형태로 구성 가능하다. 예를 들면, 플래시 메모리들은 셀 당 1 비트의 데이터가 저장되는 단일-레벨 플래시 메모리 셀들로 구성될 수도 있고, 셀 당 복수 비트의 데이터가 저장되는 멀티-레벨 플래시 메모리 셀들로 구성될 수도 있다. 그리고, 플래시 메모리들을 구성하는 메모리 셀의 종류 또한 다양한 형태로 구성될 수 있다. 예를 들면, 플래시 메모리들은 낸드(NAND) 플래시 메모리, 노어(NOR) 플래시 메모리, One_NAND 플래시 메모리 (플래시 메모리 코어 및 메모리 제어 로직이 단일의 칩으로 구현된 것) 중 적어도 어느 하나로 구성될 수 있다. 그리고, 플래시 메모리들은 적어도 두 종류 이상의 플래시 메모리들이 혼합된 하이브리드 형태로도 구성될 수 있다. 이 외에도, 플래시 메모리들의 메모리 셀의 전하 저장층의 구조 또한 다양한 형태로 구성될 수 있다. 예를 들면, 메모리 셀의 전하 저장층이 전도성이 있는 다결정 실리콘 등으로 구성될 수도 있고, Si3N4, Al2O3, HfAlO, HfSiO 등과 같은 절연막을 이용하여 구성될 수도 있다. Si3N4, Al2O3, HfAlO, HfSiO 등과 같은 절연막을 전하 저장층으로 이용하는 플래시 메모리 구조를 차지 트랩형 플래시(Charge Trap Flash, "CTF"라 불림) 메모리라 부르기도 한다. In addition, the number of data bits stored in each memory cell of the memories constituting the
SSD 컨트롤러(100)는 호스트(900)로부터 입력된 커멘드에 응답하여 버퍼 메모리(200)와 데이터 저장부(300)로/로부터 데이터를 기록하는/읽는 동작을 제어한다. SSD 컨트롤러(100)는 SSD의 제반 동작을 제어하며, SSD 컨트롤러로 불리기도 한다. 아래에서 상세히 설명되겠지만, 본 발명의 본 발명의 SSD 컨트롤러(100)는 데이터 저장부(300)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)로/로부 터 데이터를 기록하는/읽는 동작을 제어한다. 또한, 본 발명의 본 발명의 SSD 컨트롤러(100)는, 플래시 메모리들의 기록 동작시 버퍼 메모리(200)에 저장된 데이터가 복수의 채널들과 복수의 웨이들로 분산되어 저장될 수 있도록 플래시 기록 오퍼레이션들을 스케쥴링한다. 버퍼 메모리(200)에 대한 데이터 저장 방식과, 버퍼 메모리(200)에 저장된 데이터와 관련된 플래시 기록 오퍼레이션들에 대한 스케줄링 동작은 SSD 컨트롤러(100)에 탑재된 제어 알고리즘에 의해 수행될 수 있다. The
도 2는 도 1에 도시된 SSD 컨트롤러(100)의 상세 구성을 보여주는 도면이다. 2 is a diagram illustrating a detailed configuration of the
도 2를 참조하면, SSD 컨트롤러(100)는 중앙처리장치(110, 이하 CPU라 칭함), 내부 메모리(internal memory; 120), 버퍼 메모리 제어부(buffer memory control unit; 130), 호스트 인터페이스(170, 도면에는 host I/F로 표시됨), 및 플래시 인터페이스(180, 도면에는 flash I/F로 표시됨)를 포함한다. CPU(110), 내부 메모리(120), 버퍼 메모리 제어부(130), 호스트 인터페이스(170), 및 플래시 인터페이스(180)는 CPU 버스를 통해 상호 연결될 수 있다. Referring to FIG. 2, the
CPU(10)는 SSD 컨트롤러(100)의 제반 동작을 제어한다. SSD 컨트롤러(100) 내부에는 하나 또는 그 이상의 CPU(110)가 구비될 수 있다. 하나의 CPU(110)가 구비된 경우를 단일 코어 프로세서라 한다. 복수의 CPU(110)가 구비된 경우를 멀티 코어 프로세서라 한다. CPU(110), 내부 메모리(120) 및 버퍼 메모리 제어부(130)는 제어 로직을 형성할 수 있다. CPU(110), 내부 메모리(120) 및 버퍼 메모리 제어부(130)로 구성된 제어 로직은 SoC(System On Chip) 기술을 바탕으로 하여 단일칩 형태로 구성될 수 있다. 제어 로직을 구성하는 단일칩 내부에는 호스트 인터페이 스(170) 및 플래시 인터페이스(180)가 더 포함될 수 있다. The
SSD 컨트롤러(100)에서 수행되는 제어 알고리즘은 SSD 컨트롤러(100) 내부에 펌웨어(firmware) 또는 소프트웨어 형태로 저장될 수 있다. SSD 컨트롤러(100)에 저장 또는 탑재된 제어 알고리즘에 의해서, CPU(110), 내부 메모리(120), 버퍼 메모리 제어부(130), 호스트 인터페이스(170), 및 플래시 인터페이스(180)가 동작될 수 있다. 제어 알고리즘은 내부 메모리(120)의 코드 영역에 저장될 수 있다. 그리고, 제어 알고리즘에 의해 처리된 부가 정보(예를 들면, 맵핑 정보 등)는 내부 메모리(120)의 데이터 영역에 저장될 수 있다. 내부 메모리(120)는 CPU(110) 내부에 구비될 수도 있고, CPU(110) 외부에 구비될 수도 있다. 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘의 논리적인 계층 구조와 그 기능은 도 4를 참조하여 상세히 설명될 것이다. 한편, 본 발명에서는 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘이 펌웨어 또는 소프트웨어 형태로 SSD 컨트롤러(100)에 탑재되는 경우가 예시적으로 설명될 것이다. 그러나, 상기 제어 알고리즘에 포함된 각각의 구성요소는 펌웨어 또는 소프트웨어 형태 뿐만 아니라 하드웨어 형태로도 구성될 수 있다. The control algorithm performed by the
호스트 인터페이스(170)는 CPU(110)의 제어에 따라서 호스트(900)와 커멘드, 어드레스, 및 데이터를 교환한다. 호스트 인터페이스(170)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들 중 하나를 지원할 수 있다. 버퍼 메모리 제어부(130)는 CPU(110)의 제어에 응답해서 내부 메모리(120)와 버퍼 메모리(200)의 액세스 동작(예를 들면, 읽기/기록/소거 동작들)을 제어한다. 그리고, 플래시 인터페이스(180)는 내부 메모리(120) 및/또는 버퍼 메모리(200)와 데이터 저장부(300) 사이의 데이터 송수신과, 내부 메모리(120)와 버퍼 메모리(200) 사이의 데이터 송수신을 수행한다. The
호스트(900)로부터 읽기 커멘드(read command)가 입력되면, 데이터 저장부(300)로부터 읽어온 읽기 데이터(read data)는 플래시 인터페이스(180) 및 버퍼 메모리 제어부(130)를 통해 버퍼 메모리(200)에 임시 저장된다. 버퍼 메모리(200)에 임시 저장된 읽기 데이터는 버퍼 메모리 제어부(130)와 호스트 인터페이스(170)를 통해 외부(또는 호스트(900))로 출력된다. When a read command is input from the
한편, 호스트(900)로부터 요청된 기록 커멘드(write command)는 크게 두 개의 단계에 의해 수행될 수 있다. 첫 번째 단계는, 호스트 인터페이스(170)를 통해 입력된 기록 데이터(write data)가 버퍼 메모리 제어부(130)를 통해 버퍼 메모리(200)에 임시 저장되는 단계이다. 두 번째 단계는, 버퍼 메모리(200)에 임시 저장된 기록 데이터가 버퍼 메모리 제어부(130) 및 플래시 인터페이스(180)를 통해 데이터 저장부(300)에 저장되는 단계이다. 본 발명에서는, 첫 번째 단계를 버퍼 메모리 기록 오퍼레이션(buffer write operation)이라 하고, 두 번째 단계를 플래시 기록 오퍼레이션(Flash write operation)이라 부르기로 한다. Meanwhile, a write command requested from the
CPU(110)는 기록 커멘드의 수행시 버퍼 메모리 기록 오퍼레이션만 종료되면, 기록 커멘드가 종료된 것을 알리는 신호를 호스트 인터페이스(170)를 통해 호스트(900)로 제공한다. 그리고, 아직 처리되지 않은 플래시 기록 오퍼레이션은 CPU(110)가 바쁘지 않은 적절한 때 SSD(100) 내부적으로 수행된다. 본 발명의 SSD(100)는 버퍼 기록 오퍼레이션이 완료될 때마다 플래시 기록 오퍼레이션을 이슈하지 않고 해당 기록 오퍼레이션을 큐잉한다. 그리고, 복수 개의 플래시 기록 오퍼레이션들이 복수의 채널과 복수의 웨이에서 병렬로 수행될 수 있도록 하기 위해, 큐잉된 플래시 기록 오퍼레이션들을 스케쥴링한다. 본 발명에 따른 플래시 기록 오퍼레이션들의 큐잉 및 스케쥴링 동작에 대해서는 도 9 내지 도 11을 참조하여 아래에서 상세히 설명될 것이다.When only the buffer memory write operation is terminated when the write command is performed, the
이 외에도, 본 발명에서는 버퍼 기록 오퍼레이션의 수행시, 플래시 메모리의 채널 및 웨이 구조를 고려하여 기록 데이터를 버퍼 메모리(200)에 분산 저장한다. 그 결과, 플래시 기록 오퍼레이션의 수행시 버퍼 메모리(200)에 저장된 기록 데이터를 채널 및 웨이 별로 처리하기가 용이해 진다. 본 발명에 따른 버퍼 메모리(200)의 데이터 분산 저장 방식에 대해서는 도 6 내지 도 8을 참조하여 아래에서 상세히 설명될 것이다.In addition, in the present invention, when performing a buffer write operation, write data are distributed and stored in the
읽기/기록 데이터에 대한 임시 저장 기능은, 버퍼 메모리(200) 외에도 내부 메모리(120)의 데이터 영역을 이용하여 수행될 수 있다. 읽기/기록 데이터의 용량이 커질수록 읽기/기록 데이터를 임시 저장하는 기능은 내부 메모리(120) 보다는 버퍼 메모리(200)에서 주로 수행될 것이다. 본 발명에서는 임시 저장 기능을 수행할 수 있는 메모리 중에서, 버퍼 메모리(200)의 데이터 저장 방식에 대해 예시적으 로 설명될 것이다. 그러나, 이는 본 발명이 적용되는 일 예로서, 본 발명에 따른 버퍼 메모리의 데이터 저장 방식은 내부 메모리(120) 또는 이에 상응하는 메모리에도 모두 적용될 수 있다. The temporary storage function for the read / write data may be performed using a data area of the
도 3은 도 1에 도시된 데이터 저장부(300)의 채널 및 웨이의 구성을 예시적으로 보여주는 도면이다. 3 is a diagram illustrating a configuration of a channel and a way of the
도 3을 참조하면, SSD 컨트롤러(100)와 데이터 저장부(300) 사이에는 복수의 채널들(예를 들면, N개)이 구성될 수 있다. 각각의 채널(CH0, CH1, …, CH(N-1))에는 복수의 플래시 메모리들(310, 320, 330)이 전기적으로 연결될 수 있다. 각각의 채널(CH0∼CH(N-1))은 대응되는 플래시 메모리들로 커멘드 및 데이터를 송수신할 수 있는 독립적인 버스를 의미한다. 서로 다른 채널(CH0, CH1, …, CH(N-1))에 접속된 플래시 메모리들(310, 320, 330)은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리들(310, 320, 330)은 복수의 웨이들(way0∼way(M-1))(예를 들면, M개)을 구성할 수 있다. 각 채널에 구성된 M 개의 웨이에는 총 M 개의 플래시 메모리 칩들이 접속될 수 있다. Referring to FIG. 3, a plurality of channels (eg, N) may be configured between the
예를 들면, 참조번호 310의 플래시 메모리들은 0번 채널(CH0)에서 M 개의 웨이들(way0∼way(M-1))을 구성할 수 있다. 0번 채널(CH0)의 각 웨이에는 대응되는 플래시 메모리 칩(311-31m)이 접속될 수 있다. 이와 같은 플래시 메모리들과 각각의 채널과 각각의 웨이와의 접속 관계는, 참조번호 320의 플래시 메모리들 및 참조번호 330의 플래시 메모리들에도 모두 적용될 수 있다. For example, the
웨이(way)는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 플래시 메모리 칩이 식별될 수 있다. 예를 들면, 0번 채널(CH0)의 1번 웨이(way1)는 참조번호 311의 플래시 메모리 칩을 나타낸다. 그리고, 1번 채널(CH1)의 2번 웨이(way2)는 참조번호 323의 플래시 메모리 칩을 나타낸다. 호스트로부터 제공된 커멘드가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될지는, 호스트(900)로부터 전달된 논리 블록 어드레스(Logical Block Address ; LBA)에 의해 정해질 수 있다. 즉, 데이터 저장부(300)를 구성하는 각각의 플래시 메모리 칩은 대응되는 채널 및 웨이 정보에 따라 어드레스가 관리된다. A way is a unit for distinguishing flash memory chips that share the same channel. Each flash memory chip may be identified according to the channel number and the way number. For example,
각각의 플래시 메모리 칩에 저장될/읽혀진 데이터는 버퍼 메모리(200)에 임시 저장된다. 버퍼 메모리(200)는 DRAM 또는 SRAM으로 구성될 수 있다. 버퍼 메모리(200)는 플래시 메모리와 다른 종류의 메모리로 구성되기 때문에 읽기/기록 특성이 플래시 메모리와 다르다. 그리고, 버퍼 메모리(200)는 플래시 메모리처럼 채널 및 웨이 구성을 가지고 있지 않는다. 따라서, 기록 커멘드의 처리시 버퍼 메모리(200)에서 수행되는 버퍼 기록 오퍼레이션은 플래시 메모리의 채널 및 웨이 구성과 무관하게 수행될 수 있다. 그러므로, 본 발명에 따른 버퍼 메모리(200)의 데이터 저장 방식 및 스케쥴링 방식이 적용되지 않을 경우, 플래시 기록 오퍼레이션이 수행중인 채널로 다른 플래시 기록 오퍼레이션이 연속해서 이슈될 수 있다. 동일한 채널에 연속해서 플래시 기록 오퍼레이션이 이슈되는 경우, 나중에 이슈된 플래시 오퍼레이션은 먼저 수행중인 플래시 오퍼레이션이 종료될 때까지 대기하여야 한다. 이는 플래시 메모리에서 원치 않는 동작 지연을 유발할 수 있다. Data to be stored / read in each flash memory chip is temporarily stored in the
이와 같은 문제점을 방지하기 위해, 본 발명에서는 기록 커멘드의 버퍼 기록 오퍼레이션의 수행시 플래시 메모리의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)에 기록 데이터를 분산 저장한다. 그리고, 버퍼 메모리(200)에 저장된 데이터가 복수의 채널들과 복수의 웨이들에 분산되어 제공될 수 있도록 플래시 기록 오퍼레이션들을 스케쥴링한다. 그 결과, 플래시 메모리와 버퍼 메모리(200)의 물리적인 구성의 차이(예를 들면, 채널 및 웨이의 구성)로 인해 발생될 수 있는 지연시간이 방지된다. 그리고, 복수의 채널에서 복수 개의 플래시 기록 오퍼레이션들이 병렬로 수행될 수 있게 되어, SSD(500)의 전체 성능이 향상된다. In order to prevent such a problem, in the present invention, write data is distributed and stored in the
도 4는 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘의 논리적인 계층 구조를 보여주는 도면이고, 도 5는 도 4에 도시된 제어 알고리즘의 동작을 설명하기 위한 도면이다.4 is a diagram illustrating a logical hierarchical structure of a control algorithm performed by the
도 4 및 도 5를 참조하면, 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘은 호스트 인터페이스 계층(Host Interface Layer ; 10), 캐시 인터페이스 계층(Cache Interface Layer ; 20), 플래시 변환 계층(Flash Translation Layer ; 50)(이하 FTL이라 칭함), 및 플래시 인터페이스 계층(Flash Interface Layer ; 60)을 포함한다. 4 and 5, the control algorithm performed by the
데이터 저장부(300)를 구성하는 플래시 메모리는, 재기록(overwrite)이 불가능한 불휘발성 메모리이다. 그러므로, 데이터가 기록될 플래시 메모리 셀들은 반드시 소거(erase)된 상태에 있어야만 한다. 그러나, 플래시 메모리에서 프로그램 되는 데이터의 단위는 소거되는 데이터의 단위와 서로 다르다. 예를 들면, 플래시 메 모리는 페이지 단위로 프로그램 되는 반면, 소거 동작은 블록 단위로 수행된다. 1개의 블록은 복수 개의 페이지들로 구성된다. 빈번한 소거 동작은 플래시 메모리의 수명을 단축시킬 수 있다. 따라서, 소거 횟수를 최소화 하면서도 소거된 메모리 셀들 중에서 프로그램 될 메모리 셀들을 지정해 주기 위해 FTL(50)이 사용된다. The flash memory constituting the
FTL(50)은 호스트로부터 제공된 논리 블록 어드레스(LBA)를 LPN(Logical Page Number)로 변환한다. 그리고, FTL(50)은 변환된 LPN 을 소거된 플래시 메모리의 물리 블록 어드레스(Physical Block Address ; PBA)로 맵핑 시켜 주는 어드레스 맵핑 기능을 수행한다. 이 외에도, FTL(50)은 배드 블록 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 마모도 관리 등의 기능을 수행한다. 플래시 메모리(310-330)의 어드레스 맵핑 정보는 플래시 메모리(310-330)의 임의의 영역(예를 들면, 메타 영역)에 저장될 수 있고, 저장된 어드레스 맵핑 정보는 파워-업 동작시 내부 메모리(120) 또는 버퍼 메모리(200)로 로딩될 수 있다. The
호스트 인터페이스 계층(10)은, 호스트(900)와 호스트 인터페이스(170)에서 수행되는 인터페이스 동작을 제어하는 기능을 수행한다. 호스트 인터페이스 계층(10)의 기능이 프로그램된 소프트웨어 또는 펌웨어는, 호스트 인터페이스(170)에 직접 탑재될 수도 있고, 내부 메모리(120)에 저장되어 호스트 인터페이스(170)의 동작을 제어하는데 사용될 수도 있다. 플래시 인터페이스 계층(60)은 플래시 인터페이스(180)와 데이터 저장부(300)에 구비된 플래시 메모리들 사이에서 수행되는 인터페이스 동작을 제어하는 기능을 수행한다. 플래시 인터페이스 계층(60)의 기능이 프로그램 된 소프트웨어 또는 펌웨어는, 플래시 인터페이스 계층(60)에 직접 탑 재될 수도 있고, 내부 메모리(120)에 저장되어 플래시 인터페이스 계층(60)의 동작을 제어하는데 사용될 수도 있다. The
캐시 인터페이스 계층(20)은 버퍼 메모리 제어부(130)에서 수행되는 내부 메모리(120) 및/또는 버퍼 메모리(200)의 읽기/기록 동작을 제어하는 기능을 수행한다. 캐시 인터페이스 계층(20)의 기능이 프로그램 된 소프트웨어 또는 펌웨어는, 버퍼 메모리 제어부(130)에 직접 탑재될 수도 있고, 내부 메모리(120)에 저장되어 버퍼 메모리 제어부(130)의 동작을 제어하는데 사용될 수도 있다. 캐시 인터페이스 계층(20)은 버퍼 매니저(Buffer Manager ; 30)와 스케쥴러(Scheduler ; 40)를 포함한다. The
버퍼 매니저(30)는 플래시 메모리(310-330)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)에 저장되는 데이터를 관리하는 기능을 수행한다. 예를 들면, 버퍼 매니저(30)는 버퍼 메모리(200)에 포함된 복수 개의 섹터들을 볼륨(Volume)과 뱅크(Bank) 단위로 구분한다. 그리고, 볼륨 및 뱅크 단위로 구분된 각각의 섹터에 데이터를 분산 저장한다. 버퍼 메모리(200)의 볼륨은 플래시 메모리의 채널에 대응될 수 있다. 버퍼 메모리(200)의 뱅크는 플래시 메모리의 웨이에 대응될 수 있다. 버퍼 메모리(200)의 볼륨 및 뱅크의 물리적인 구성은 도 6에서 상세히 설명될 것이다.The
버퍼 매니저(30)는 버퍼 메모리(200)에 저장될 데이터를 볼륨 및 뱅크 단위로 분산시키는데 플래시 메모리(310-330)의 LPN을 사용할 수 있다. LPN은 FTL(50)에서 관리되는 논리적인 데이터 단위를 의미한다. 플래시 메모리(310-330)의 LPN과 버퍼 메모리(200)의 볼륨 및 뱅크 사이의 맵핑 정보는 내부 메모리(120) 또는 버퍼 메모리(200)에 저장될 수 있다. 버퍼 메모리(200)의 맵핑 정보는 맵핑 테이블 형태로 저장될 수 있다. 버퍼 매니저(30)는 버퍼 메모리(200)에 데이터가 분산 저장되고 나면(즉, 버퍼 기록 오퍼레이션이 수행되고 나면), 플래시 기록 오퍼레이션을 FTL(50)로 이슈하지 않고 스케쥴러(40)에 등록한다. 본 발명에서는 스케쥴러(40)에 등록되는 각각의 플래시 기록 오퍼레이션을 잡유닛(JobUnit)이라 정의한다. 하나의 잡유닛에 대응되는 기록 데이터는 버퍼 메모리(200)의 하나의 캐시라인에 의해 지정된 하나의 섹터로부터 제공될 수 있다.The
스케쥴러(40)는, 버퍼 메모리(200)에 분산 저장된 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 제공될 수 있도록, 플래시 기록 오퍼레이션들을 스케쥴링한다. 구체적으로, 스케쥴러(40)는 각각의 잡유닛(JobUnit)에 대응되는 버퍼 메모리(200)의 볼륨 및 뱅크 정보를 고려하여 잡유닛 플레이트(JobUnit Plate)를 구성한다. 1개의 잡유닛 플레이트에는 복수 개의 잡유닛들이 포함되며, 복수 개의 잡유닛 플레이트들은 잡유닛 박스(JobUnit Box)를 구성할 수 있다. 스케쥴러(40)는 버퍼 매니저(30)로부터 제공된 플래시 기록 오퍼레이션들이 하나의 잡유닛 플레이트를 형성할 때마다 잡유닛 플레이트에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다. 이슈된 복수 개의 플래시 기록 오퍼레이션들에서 기록될 데이터는, 버퍼 메모리(200)의 하나의 캐시웨이에 의해 지정된 복수 개의 섹터들로부터 제공될 것이다. The
FTL(50)은 스케쥴러(40)로부터 이슈된 복수 개의 플래시 기록 오퍼레이션들 에 응답해서, 각각의 플래시 기록 오퍼레이션에 대응되는 LPN을 대응되는 플래시 메모리의 PBA로 맵핑한다. 그리고, 맵핑된 PBA에 대응되는 플래시 메모리에 데이터를 기록한다. 본 발명에 따른 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성과, 스케쥴러(40)에서 수행되는 커멘드 스케쥴링 방법은 도 9 내지 도 11을 참조하여 아래에서 상세히 설명될 것이다. In response to the plurality of flash write operations issued from the
도 6은 본 발명에 따른 버퍼 메모리(200)의 캐시라인, 캐시라인 그룹, 및 캐시웨이의 물리적인 구성을 보여주는 도면이다. 도 6에는 1 개의 캐시웨이(Cache Way ; 210)의 구성이 예시적으로 도시되어 있다. 6 is a diagram illustrating a physical configuration of a cache line, a cache line group, and a cache way of the
도 6을 참조하면, 버퍼 메모리(200)는 복수 개의 섹터들로 구성될 수 있다. 복수 개의 섹터들은 복수 개(예를 들면, N개)의 볼륨들과, 복수 개(예를 들면, M개)의 뱅크들의 교차 영역에 배치될 수 있다. 볼륨은 플래시 메모리의 채널에 대응될 수 있고, 뱅크는 플래시 메모리의 웨이에 대응될 수 있다. 여기서, 볼륨의 개수를 나타내는 N은 데이터 저장부(300)에 형성된 채널들의 개수에 대응될 수 있다. 그리고, 뱅크의 개수를 나타내는 M은 데이터 저장부(300)에 형성된 웨이들의 개수에 대응될 수 있다. N 및 M은 데이터 저장부(300)의 채널 및 웨이의 개수에 따라서 변경될 수 있다. N 및 M은 서로 다른 값을 가질 수도 있고 서로 동일한 값을 가질 수도 있다. Referring to FIG. 6, the
본 발명에서는 N개의 볼륨들과 M개의 뱅크들로 구성된 N×M개의 섹터들의 집합의 논리 어드레스를 캐시웨이(210)로 정의한다. 그리고, 1개의 볼륨과 1개의 뱅크에 대응되는 1개의 섹터의 논리 어드레스를 1개의 캐시라인(Cache Line)으로 정 의한다. 버퍼 메모리에는 복수 개의 캐시웨이들이 대응될 수 있다. 각각의 캐시웨이에서 행(column) 방향으로 배열된 N개의 캐시라인들은 1 개의 캐시라인 그룹(220_i)을 형성할 수 있다. 1개의 캐시웨이(210)에는 M 개의 캐시라인 그룹들(220_0, 220_1, …, 220_(M-1))이 포함될 수 있다. 각각의 캐시라인 그룹(220_i)에 포함된 N 개의 캐시라인들은 N 개의 채널들에 각각 대응될 수 있다. In the present invention, a logical address of a set of N × M sectors composed of N volumes and M banks is defined as the
도 7 및 도 8은 본 발명에 따른 버퍼 메모리(200)의 논리 어드레스인 캐시라인, 캐시라인 그룹, 및 캐시웨이의 구성을 보여주는 도면이다. 도 7 및 도 8에는 1개의 캐시웨이가 8개의 볼륨과 8개의 뱅크로 구성되는 경우가 예시적으로 도시되어 있다. 도 7에는 1 개의 캐시웨이의 구성이 주로 도시되어 있고, 도 8에는 복수 개의 캐시웨이들간의 구성이 주로 도시되어 있다.7 and 8 illustrate configurations of cache lines, cache line groups, and cache ways that are logical addresses of the
도 7 및 도 8을 참조하면, 본 발명에 따른 버퍼 메모리(200)의 데이터 저장 방식에 따르면, 복수 개의 캐시웨이들(210_0, 210_1, …)은 버퍼 메모리(200) 내에 순차적으로 배열될 수 있다. 각각의 캐시웨이(210_i)에는 복수 개(예를 들면, 8개)의 캐시라인 그룹들(220_0, 220_1, …, 220_7)이 포함될 수 있다. 복수 개의 캐시라인 그룹들(220_0, 220_1, …, 220_7)은 대응되는 캐시웨이(210_i) 내에서 순차적으로 배열될 수 있다. 각각의 캐시라인 그룹(220_i)에는 복수 개(예를 들면, 8개)의 캐시라인들(Cache Line0, Cache Line1, …)이 포함될 수 있다. 복수 개의 캐시라인들(Cache Line0, Cache Line1, …)은 대응되는 캐시라인 그룹(220_i) 내에서 순차적으로 배열될 수 있다. 7 and 8, according to the data storage method of the
도 7 및 도 8에 도시된 버퍼 메모리(200)의 논리 어드레스의 기본 단위는 캐 시라인(Cache Line i)이다. 각각의 캐시라인은 버퍼 메모리(200)의 1개의 섹터에 대응된다. 1개의 섹터에는 예를 들면 512 바이트의 데이터가 저장될 수 있다. 8개의 섹터는 플래시 메모리의 1개의 페이지에 대응될 수 있다. 도 7 및 도 8에 도시된 논리 어드레스들은 캐시라인(Cache Line i)을 기본 단위로 하여 도 6에 도시되어 있는 섹터들의 물리적인 위치에 각각 대응될 수 있다. The basic unit of the logical address of the
예를 들어, 호스트(900)로부터 기록 커멘드와 이에 대응되는 논리 블록 어드레스(LBA)가 입력되면, 논리 블록 어드레스(LBA)는 FTL(50)에 의해 LPN으로 변환된다. 버퍼 매니저(30)는 변환된 LPN을 참조하여 LPN에 대응되는 버퍼 메모리(200)의 물리 어드레스(즉, 볼륨 및 뱅크)를 결정한다. 버퍼 메모리(200)의 논리 어드레스는 FTL(50)에 의해 변환된 LPN이 직접 사용될 수도 있고, LPN로부터 섹터 단위로 계산된 캐시라인(Cache Line i)의 논리 어드레스가 사용될 수도 있다. 버퍼 메모리(200)의 물리 어드레스를 결정하는 과정은, 버퍼 메모리(200)의 논리 어드레스를 물리 어드레스로 맵핑하는 과정이라 할 수 있다. 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 버퍼 메모리(200)의 논리 어드레스와 물리 어드레스의 맵핑 결과를 내부 메모리(120) 또는 버퍼 메모리에 저장한다. 맵핑 결과는 맵핑 테이블 형태로 저장될 수 있다. For example, when a write command and a corresponding logical block address LBA are input from the
버퍼 메모리(200)의 물리 어드레스가 결정되고 나면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 기록 데이터(write data)를 해당 물리 어드레스의 섹터에 저장한다. 기록 데이터를 버퍼 메모리(200)에 저장하는 과정을 버퍼 기록 오퍼레이션이라 한다. 버퍼 기록 오퍼레이션이 수행되고 나면, 버퍼 매 니저(30)는 버퍼 기록 오퍼레이션이 수행된 볼륨과 뱅크 정보를 고려하여 대응되는 플래시 기록 오퍼레이션을 스케쥴러(40)에 등록한다. After the physical address of the
도 9는 본 발명에 따른 스케쥴링 동작에 사용되는 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성을 보여주는 도면이다.9 is a view showing the configuration of a job unit, a job unit plate, and a job unit box used in the scheduling operation according to the present invention.
도 4 및 도 9를 참조하면, 버퍼 메모리(200)에 기록 데이터가 저장되고 나면, 스케쥴러(40)는 버퍼 매니저(30)에 의해 등록된 플래시 기록 오퍼레이션을 잡 유닛 단위로 큐잉한다. 스케쥴러(40)는 큐잉된 플래시 기록 오퍼레이션들이 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 이슈될 수 있도록 스케쥴링한다. 큐잉된 플래시 기록 오퍼레이션들은 스케쥴러(40)의 스케쥴링 결과에 따라 소정의 단위(예를 들면, 잡유닛 플레이트 단위)로 FTL(50)로 이슈된다. 그 결과, 버퍼 메모리(200)에 분산 저장된 기록 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 저장될 수 있게 된다. 4 and 9, after write data is stored in the
본 발명에서는 스케쥴러(40)에 의해 큐잉되는 플래시 기록 오퍼레이션의 기본 단위를 잡유닛(JobUnit ; 410)이라 정의한다. 복수 개의 잡유닛들은 1개의 플레이트(JobUnit Plate ; 420)을 구성할 수 있다. 예를 들어, 데이터 저장부(300)에 N 개의 채널들과 M 개의 웨이들이 구비되는 경우, 버퍼 메모리(200)의 섹터들은 N 개의 볼륨들과 M 개의 뱅크들로 구분될 수 있다. 이 경우, 1 개의 잡유닛 플레이트에는 N×M개의 잡유닛들이 포함될 수 있다. In the present invention, the basic unit of the flash write operation queued by the
도 9에는 데이터 저장부(300)에 8 개의 볼륨들(또는 채널들)이 구비되고 8 개의 뱅크들(또는 웨이들)이 구비되는 경우의 잡유닛 플레이트 및 잡유닛 박스의 구성이 예시적으로 도시되어 있다. 그러나, 이는 본 발명이 적용되는 일 예로서, 잡유닛 플레이트(420)를 구성하는 잡유닛들의 개수는 볼륨들(또는 채널들)의 개수와 뱅크들(또는 웨이들)의 개수에 따라 다양하게 구성될 수 있다.FIG. 9 exemplarily illustrates a configuration of a job unit plate and a job unit box when eight volumes (or channels) are provided in the
복수 개의 잡유닛 플레이트들은 1개의 잡유닛 박스(JobUnit Box ; 430)를 구성할 수 있다. 잡유닛 박스(430)에 포함된 복수 개의 잡유닛 플레이트들 중 최 하단에 구성된 잡유닛 플레이트를 베이스 플레이트(Base Plate)라 한다. 베이스 플레이트는, 잡유닛 박스(430)에 포함된 각각의 잡유닛 플레이트들과 실질적으로 동일한 볼륨 및 뱅크의 구성을 갖는다. 잡유닛 박스의 깊이(depth)는 소정의 크기(예를 들면 depth = M)(M은 자연수)를 갖도록 구성될 수 있다. 잡유닛 박스(430)의 깊이는 잡유닛 박스(430)에 포함될 수 있는 잡유닛 플레이트(420)의 개수를 의미할 수 있다. 잡유닛 박스(430)의 깊이는 스케쥴러에 의해 큐잉될 수 있는 데이터의 용량의 크기에 따라 다양하게 변경될 수 있다. The plurality of job unit plates may constitute one
도 10은 본 발명에 따른 커멘드 스케쥴링 방법을 설명하기 위한 도면이다. 10 is a view for explaining a command scheduling method according to the present invention.
도 10을 참조하면, 기록 커멘드의 실행시 버퍼 기록 오퍼레이션이 수행되고 나면, 버퍼 매니저(30)는 대응되는 플래시 기록 오퍼레이션을 스케쥴러(40)로 등록한다. 스케쥴러(40)는 버퍼 매니저(30)에 의해 등록된 플래시 기록 오퍼레이션을 FTL(50)이슈하지 않고 잡유닛 형태로 연속해서 큐잉한다(도 10의 410_0, 410_1, 410_2 참조). Referring to FIG. 10, after a buffer write operation is performed during execution of a write command, the
각각의 잡유닛은 각각의 플래시 기록 오퍼레이션에 대응되는 볼륨 및 뱅크 정보(또는 채널 및 웨이 정보)에 따라서 잡유닛 플레이트 상에 고유의 위치를 가질 수 있다. 예를 들면, 참조번호 410_0으로 표시된 잡유닛은 5번 볼륨과 7번 뱅크에 대응되는 잡유닛으로 정의될 수 있다. 참조번호 410_1 및 410_2로 표시된 잡유닛들은 모두 1번 볼륨과 2번 뱅크에 대응되는 잡유닛들로 정의될 수 있다. 동일한 볼륨과 동일한 뱅크에 해당되는 기록 오퍼레이션들(410_1, 410_2)은, 잡유닛 플레이트의 대응되는 위치에 수직 방향으로 적층된다. 동일 위치에 적층 가능한 잡유닛들의 개수는 잡유닛 박스의 깊이(depth)에 의해 결정될 수 있다.Each job unit may have a unique position on the job unit plate according to volume and bank information (or channel and way information) corresponding to each flash write operation. For example, the job unit indicated by reference numeral 410_0 may be defined as a job unit corresponding to the volume 5 and the
스케쥴러(40)는 큐잉된 잡유닛들(410_0, 410_1, 410_2)이 하나의 잡유닛 플레이트(420)를 구성할 때마다 해당 잡유닛 플레이트(420)에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다. 이때 구성되는 잡유닛 플레이트(420)는, 잡유닛 박스의 최하위에 위치한 베이스 플레이트에 해당된다. 이슈되지 않은 잡유닛들(410_0, 410_1, 410_2)은 스케쥴러(40)에 의해 큐잉된 상태를 계속해서 유지한다. 스케쥴러(40)는 새로운 플래시 기록 오퍼레이션이 등록될 때마다 기존의 잡유닛들(410_0, 410_1, 410_2)에 새로운 잡유닛을 큐잉한다. 스케쥴러(40)는 큐잉된 잡유닛들이 새로운 잡유닛 플레이트(즉, 베이스 플레이트)를 구성하면, 새롭게 구성된 잡유닛 플레이트에 대응되는 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다. The
FTL(50)로 이슈된 플래시 기록 오퍼레이션들은 데이터 저장부(300)의 N 개의 채널들과 M 개의 웨이들에서 수행될 플래시 기록 오퍼레이션들이다. FTL(50)은 이슈된 복수 개의 오퍼레이션들의 LPN(Logical Page Number)들을 플래시 메모리의 물리 블록 어드레스(Physical Block Address ; PBA)들로 변환하는 어드레스 맵핑을 수행한다. N 개의 채널들과 M 개의 웨이들의 플래시 메모리의 PBA들에는 버퍼 메모리(200)의 N 개의 볼륨들과 M 개의 뱅크들로부터 제공된 기록 데이터가 각각 저장된다. 이 때, N 개의 채널들과 M 개의 웨이들의 플래시 메모리들에서 수행되는 플래시 기록 동작은 N 개의 채널들에서 병렬로 또는 동시에 수행될 수 있다. 그 결과, SSD(500)의 채널 이용도와 데이터 저장 성능이 효과적으로 향상된다. Flash write operations issued to the
도 11은 본 발명에 따른 SSD(500)의 데이터 저장 방법을 보여주는 흐름도이다.11 is a flowchart illustrating a data storage method of the
도 11을 참조하면, 호스트(900)로부터 기록 커멘드(write command)가 입력되면, 호스트 인터페이스(170)는 호스트 인터페이스 계층(10)의 제어에 따라서 버퍼 메모리 제어부(130)로 캐시라인을 요청한다(S1000 단계). 캐시라인은 기록 커멘드에 의해 기록 요청된 데이터(즉, 기록 데이터)가 임시 저장될 섹터를 나타낸다. Referring to FIG. 11, when a write command is input from the
버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 버퍼 메모리(200) 내에 빈 캐시라인이 존재하는지 여부를 판별한다(S1100 단계). S1100 단계에서의 판별 결과 빈 캐시라인이 존재하면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 기록 데이터가 저장될 캐시라인을 할당 받는다. 그리고 나서, 버퍼 메모리 제어부(130)는 할당된 캐시라인에 기록 데이터를 임시 저장한다(S1200 단계). 그러나, S1100 단계에서의 판별 결과 빈 캐시라인이 존재하지 않으면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 빅팀(Victim) 캐시라인을 선정하고 플러시(flush)를 수행한다(S1300 단계). 플러시는 버퍼 메모리(200)에 저장된 데이터를 강제적으로 출력하는 것을 의미한다. 이어서, 버퍼 메 모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 플러시된 캐시라인의 볼륨과 뱅크 정보를 알아낸다. 그리고, 플러시된 캐시라인의 데이터를 플래시 메모리에 저장하기 위한 플래시 기록 오퍼레이션을 잡유닛 단위로 스케쥴러(40)에 등록한다(S1400 단계). The
스케쥴러(40)는 등록된 잡유닛을 큐잉하고, 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 찼는지(full) 여부(즉, 베이스 플레이트가 형성되었는지 여부)를 판별한다(S1500 단계). S1500 단계의 판별 결과 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 차지 않았으면, 수순은 S1400 단계로 되돌아간다. 그리고, S1500 단계의 판별 결과 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 찼으면, 베이스 플레이트에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다(S1600 단계). The
FTL(50)은 이슈된 복수 개의 플래시 기록 오퍼레이션들을 실행한다(S1700 단계). S1700 단계에서, FTL(50)은 이슈된 복수 개의 플래시 기록 오퍼레이션들에 응답해서 기록 데이터가 저장될 복수 개의 플래시 메모리의 물리 블록 어드레스(PBA)들을 찾아낸다. 그리고, 해당 물리 블록 어드레스(PBA)들에 기록 데이터를 저장한다. 이 때 수행되는 플래시 기록 오퍼레이션들은 복수 개의 채널들과 복수 개의 웨이들에 해당되는 복수 개의 플래시 메모리들에서 병렬로 또는 동시에 수행된다. The
이상에서는, 호스트(900)로부터 제공된 기록 커멘드(write command)에 응답해서 버퍼 메모리(200)와 데이터 저장부(300)의 플래시 메모리에 데이터를 저장하는 방법에 대해서 설명되었다. 그러나, 본 발명의 SSD(500)가 수행 예정인 복수 개 의 커멘드들을 큐잉할 수 있는 기능을 제공할 수 있다면, 앞에서 설명된 본 발명의 스케쥴링 방법은 기록 커멘드 뿐만 아니라 읽기 커멘드에도 적용될 수 있을 것이다. 본 발명의 SSD(500)에 적용될 수 있는 커멘드 큐잉(command queuing) 방식으로는, NCQ(Native Command Queuing), TCQ(Tagged Command Queuing) 등이 포함될 수 있다. In the above, the method of storing data in the flash memory of the
도 12는 본 발명에 따른 컴퓨팅 시스템(2000)의 구성을 보여주는 도면이다. 12 illustrates a configuration of a
도 12를 참조하면, 본 발명에 따른 컴퓨팅 시스템(2000)은 버스에 전기적으로 연결된 SSD 컨트롤러(100), 데이터 저장부(300), 모뎀(600), 사용자 인터페이스(800), 그리고 마이크로프로세서(900)를 포함한다. 모뎀(600)에는 베이스밴드 칩셋(baseband chipset) 또는 베이스밴드 SoC(baseband Soc)등이 포함될 수 있다. Referring to FIG. 12, the
도 12에 도시된 SSD 컨트롤러(100) 및 데이터 저장부(300)는 도 1 및 도 2에 도시된 데이터 저장 장치(SSD ; 500)를 구성할 수 있다. 도 12에 도시된 SSD(500)의 상세 구성은 도 1 및 도 2에서 설명한 것과 실질적으로 동일하다. 따라서, 동일한 구성에 대해서는 동일한 참조 번호를 부여하고 중복되는 설명은 이하 생략하기로 한다. The
데이터 저장부(300)는 SSD(500)의 메인 스토리지이다. 데이터 저장부(300)에는 마이크로프로세서(900)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 SSD 컨트롤러(100)를 통해 저장될 수 있다. 데이터 저장부(300)는 복수 개의 채널들과 복수 개의 웨이들을 지원하는 불휘발성 메모리로 구성되며, 바람직하게는 불휘발성 메모리 중에서도 플래시 메모리로 구성될 수 있다. The
SSD(500)는 SSD 컨트롤러(100)와 데이터 저장부(300) 사이에 송수신되는 데이터와, SSD 컨트롤러(100)와 호스트(900) 사이에 송수신되는 데이터를 임시로 저장할 수 있는 버퍼 메모리를 구비할 수 있다. 버퍼 메모리는 SSD 컨트롤러(100) 외부에 구비될 수도 있고, SSD 컨트롤러(100) 내부에 구비될 수도 있다. 버퍼 메모리는 DRAM 또는 SRAM과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다. The
SSD 컨트롤러(100)는 데이터 저장부(300) 및 버퍼 메모리의 읽기/기록/소거 동작을 제어한다. SSD 컨트롤러(100) 내부에는 버퍼 매니저(30), 스케쥴러(40) 및 FTL(50)과 같은 제어 알고리즘이 소프트웨어 또는 펌웨어로 탑재될 수 있다. SSD 컨트롤러(100)는 데이터 저장부(300)가 SRAM/HDD 처럼 읽기/기록/소거 동작이 자유롭게 수행되는 저장 매체로서 사용할 수 있도록 FTL(50)을 통해 데이터 저장부(300)의 맵핑 정보를 관리한다. 데이터 저장부(300)의 맵핑 정보는 FTL(50)에 의해 관리된다. FTL(50)에 의해 수행된 맵핑 결과는 메타 데이터 형태로 저장될 수 있다. The
SSD 컨트롤러(100)는 버퍼 매니저(30)를 통해 플래시 메모리(310-330)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리에 저장되는 데이터를 볼륨(Volume)과 뱅크(Bank) 단위로 구분하여 분산 저장한다. 그리고, SSD 컨트롤러(100)는 스케쥴러(40)를 통해 버퍼 메모리에 분산 저장된 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 이슈될 수 있도록 스케쥴링한다. 그 결과, 버퍼 메모리에 저장된 데이터가 복수 개의 채널들 및 복수 개의 웨이들에 대응되는 복수 개의 플래시 메모리들에서 병렬로 또는 동시에 기록될 수 있게 된다. 그 결 과, SSD(500)의 채널 이용도 및 데이터 저장 성능이 효과적으로 향상된다. The
도 12에는 SSD 컨트롤러(100) 및 데이터 저장부(300)가 SSD를 구성하는 경우가 예시적으로 도시되어 있다. 그러나, SSD 컨트롤러(100) 및 데이터 저장부(300)는 SSD 뿐만 아니라, 메모리 카드 및/또는 메모리 카드 시스템을 구성할 수 있다.12 illustrates an example in which the
본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(700)가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. When the computing system according to the present invention is a mobile device, a
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, optimal embodiments have been disclosed in the drawings and the specification. Although specific terms have been used herein, they are used only for the purpose of describing the present invention and are not used to limit the scope of the present invention as defined in the meaning or claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible from this. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.
또한, 본 발명은 또한 컴퓨터로 읽을 수 있는 저장 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 저장 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 저장 매체의 예로는 ROM, RAM, CD-ROM, 플래시 메 모리, USB 메모리, 자기 테이프, 플로피디스크, 하드 디스크, 광데이터 저장장치, SSD 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 저장 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.In addition, the present invention can also be embodied as computer readable code on a computer readable storage medium. The computer-readable storage medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable storage media include ROM, RAM, CD-ROM, flash memory, USB memory, magnetic tape, floppy disk, hard disk, optical data storage device, SSD, and the like. For example, it is implemented in the form of transmission over the Internet). The computer readable storage medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
도 1은 본 발명에 따른 데이터 저장 장치(SSD) 및 그것을 포함하는 메모리 시스템의 구성을 보여주는 블록도이다. 1 is a block diagram showing a configuration of a data storage device (SSD) and a memory system including the same according to the present invention.
도 2는 도 1에 도시된 SSD 컨트롤러의 상세 구성을 보여주는 도면이다. FIG. 2 is a diagram illustrating a detailed configuration of the SSD controller shown in FIG. 1.
도 3은 도 1에 도시된 데이터 저장부의 채널 및 웨이의 구성을 예시적으로 보여주는 도면이다. 3 is a diagram illustrating a configuration of a channel and a way of the data storage unit illustrated in FIG. 1.
도 4는 본 발명의 SSD 컨트롤러에서 수행되는 제어 알고리즘의 논리적인 계층 구조를 보여주는 도면이다.4 is a diagram illustrating a logical hierarchical structure of a control algorithm performed in the SSD controller of the present invention.
도 5는 도 4에 도시된 제어 알고리즘의 동작을 설명하기 위한 도면이다.FIG. 5 is a diagram for describing an operation of the control algorithm illustrated in FIG. 4.
도 6은 본 발명에 따른 버퍼 메모리의 캐시라인, 캐시라인 그룹, 및 캐시웨이의 물리적인 구성을 보여주는 도면이다.6 is a diagram illustrating a physical configuration of a cache line, a cache line group, and a cache way of a buffer memory according to the present invention.
도 7 및 도 8은 본 발명에 따른 버퍼 메모리 상에서의 캐시라인, 캐시라인 그룹, 및 캐시웨이의 논리적인 구성을 보여주는 도면이다. 7 and 8 illustrate a logical configuration of a cache line, a cache line group, and a cache way on a buffer memory according to the present invention.
도 9는 본 발명에 따른 스케쥴링 동작에 사용되는 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성을 보여주는 도면이다.9 is a view showing the configuration of a job unit, a job unit plate, and a job unit box used in the scheduling operation according to the present invention.
도 10은 본 발명에 따른 커멘드 스케쥴링 방법을 설명하기 위한 도면이다. 10 is a view for explaining a command scheduling method according to the present invention.
도 11은 본 발명에 따른 SSD의 데이터 저장 방법을 보여주는 흐름도이다.11 is a flowchart illustrating a data storage method of an SSD according to the present invention.
도 12는 본 발명에 따른 컴퓨팅 시스템의 구성을 보여주는 도면이다. 12 illustrates a configuration of a computing system in accordance with the present invention.
*도면의 주요 부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *
10 : 호스트 인터페이스 계층 20 : 캐시 인터페이스 계층10: host interface layer 20: cache interface layer
30 : 버퍼 매니저 40 : 스케쥴러30: buffer manager 40: scheduler
50 : 플래시 변환 계층(FTL) 60 : 플래시 인터페이스 계층50: flash translation layer (FTL) 60: flash interface layer
100 : SSD 컨트롤러 300 : 데이터 저장부100: SSD controller 300: data storage unit
500 : 데이터 저장 장치(SSD) 900 : 호스트500: data storage device (SSD) 900: host
Claims (31)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090046575A KR101517183B1 (en) | 2009-05-27 | 2009-05-27 | Data storage device and data storing method thereof |
US12/772,452 US8341338B2 (en) | 2009-05-06 | 2010-05-03 | Data storage device and related method of operation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090046575A KR101517183B1 (en) | 2009-05-27 | 2009-05-27 | Data storage device and data storing method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100128120A true KR20100128120A (en) | 2010-12-07 |
KR101517183B1 KR101517183B1 (en) | 2015-05-18 |
Family
ID=43505117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090046575A KR101517183B1 (en) | 2009-05-06 | 2009-05-27 | Data storage device and data storing method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101517183B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150138713A (en) * | 2014-06-02 | 2015-12-10 | 삼성전자주식회사 | Non-volatile memory system and operating method of non-volatile memory system |
US10095411B2 (en) | 2014-09-24 | 2018-10-09 | Samsung Electronics Co., Ltd. | Controllers including separate input-output circuits for mapping table and buffer memory, solid state drives including the controllers, and computing systems including the solid state drives |
US10157007B2 (en) | 2016-07-14 | 2018-12-18 | SK Hynix Inc. | Memory system and operating method thereof |
KR20210122726A (en) * | 2014-05-07 | 2021-10-12 | 에스케이하이닉스 주식회사 | Memory management apparatus and control method thereof |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050026789A (en) * | 2003-09-09 | 2005-03-16 | 삼성전자주식회사 | Cache memory device with flexible sizes |
-
2009
- 2009-05-27 KR KR1020090046575A patent/KR101517183B1/en not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210122726A (en) * | 2014-05-07 | 2021-10-12 | 에스케이하이닉스 주식회사 | Memory management apparatus and control method thereof |
KR20150138713A (en) * | 2014-06-02 | 2015-12-10 | 삼성전자주식회사 | Non-volatile memory system and operating method of non-volatile memory system |
US10095411B2 (en) | 2014-09-24 | 2018-10-09 | Samsung Electronics Co., Ltd. | Controllers including separate input-output circuits for mapping table and buffer memory, solid state drives including the controllers, and computing systems including the solid state drives |
US10157007B2 (en) | 2016-07-14 | 2018-12-18 | SK Hynix Inc. | Memory system and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
KR101517183B1 (en) | 2015-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8341338B2 (en) | Data storage device and related method of operation | |
KR101486987B1 (en) | Semiconductor memory device including nonvolatile memory and commnand scheduling method for nonvolatile memory | |
US10289314B2 (en) | Multi-tier scheme for logical storage management | |
JP6163532B2 (en) | Device including memory system controller | |
US8332579B2 (en) | Data storage apparatus and method of writing data | |
US9417961B2 (en) | Resource allocation and deallocation for power management in devices | |
KR101516580B1 (en) | Controller, data storage device and data storage system having the same, and method thereof | |
US8555000B2 (en) | Data storage device and data storing method thereof | |
TWI432965B (en) | Memory systems with a plurality of structures and methods for operating the same | |
KR100610647B1 (en) | A mass storage device having both xip function and storage fuction | |
US10572379B2 (en) | Data accessing method and data accessing apparatus | |
US8171239B2 (en) | Storage management method and system using the same | |
US20160062885A1 (en) | Garbage collection method for nonvolatile memory device | |
US20140337566A1 (en) | Solid state memory (ssm), computer system including an ssm, and method of operating an ssm | |
US20130080689A1 (en) | Data storage device and related data management method | |
KR20100100394A (en) | Solid state disk device and data storing and reading methods thereof | |
TW201508484A (en) | Data writing method, hard disc module, and data writing system | |
EP3926451B1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
KR20200121645A (en) | Controller, operating method thereof and memory system | |
US11269559B2 (en) | Data processing device | |
CN111796759A (en) | Computer readable storage medium and method for fragment data reading on multiple planes | |
KR20200114212A (en) | Data storage device and operating method thereof | |
KR101515621B1 (en) | Solid state disk device and random data processing method thereof | |
KR101517183B1 (en) | Data storage device and data storing method thereof | |
KR102596964B1 (en) | Data storage device capable of changing map cache buffer size |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |