KR20100128120A - Data storage device and data storing method thereof - Google Patents

Data storage device and data storing method thereof Download PDF

Info

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
Application number
KR1020090046575A
Other languages
Korean (ko)
Other versions
KR101517183B1 (en
Inventor
이진혁
김장환
조한찬
우영재
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090046575A priority Critical patent/KR101517183B1/en
Priority to US12/772,452 priority patent/US8341338B2/en
Publication of KR20100128120A publication Critical patent/KR20100128120A/en
Application granted granted Critical
Publication of KR101517183B1 publication Critical patent/KR101517183B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling 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

PURPOSE: A data storage device and a data storing method thereof are provided to efficiently improve channel usability and data storage performance by scheduling the data dispersed and stored in a buffer memory. CONSTITUTION: Main memories(300) are connected to channels and ways, and a buffer memory(200) temporally stores the data which are supposed to be stored in the main memories. An SSD(Solid State Disk) controller(100) stores the data in the buffer memory to allow the data to correspond to the channel and way information of the main memories. The SSD controller includes a buffer memory controller to control the reading/writing operation of the buffer memory and the main memories based on the channel and way information.

Description

데이터 저장 장치 및 그것의 데이터 저장 방법{DATA STORAGE DEVICE AND DATA STORING METHOD THEREOF}DATA STORAGE DEVICE AND DATA STORING METHOD THEREOF

본 발명은 데이터 저장 장치에 관한 것으로, 좀 더 구체적으로는 반도체를 메인 스토리지로 채택한 데이터 저장 장치 및 그것의 데이터 저장 방법에 관한 것이다.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 memory system 1000 including the same according to the present invention.

도 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 memory system 1000 may include a data storage device 500 and a host 900. The SSD 500 may include an SSD controller 100, a buffer memory 200, and a data storage unit 300 (represented as storage in FIG. 1).

버퍼 메모리(200)는 SSD 컨트롤러(100)와 데이터 저장부(300) 사이에 송수신되는 데이터와, SSD 컨트롤러(100)와 호스트(900) 사이에 송수신되는 데이터를 임시로 저장할 수 있다. SSD 컨트롤러(100) 내부에는 버퍼 메모리(200)의 데이터 입출력을 제어하는 버퍼 메모리 제어 기능이 구비될 수 있다. 이는 버퍼 메모리(200) 의 데이터 입출력 동작이 SSD 컨트롤러(100)를 통해 수행될 수 있음을 의미한다. 버퍼 메모리(200)는 도 1과 같이 SSD 컨트롤러(100) 외부에 구비될 수도 있고, SSD 컨트롤러(100) 내부에 구비될 수도 있다. 버퍼 메모리는 DRAM 또는 SRAM과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다. The buffer memory 200 may temporarily store data transmitted and received between the SSD controller 100 and the data storage unit 300 and data transmitted and received between the SSD controller 100 and the host 900. The SSD controller 100 may include a buffer memory control function for controlling data input / output of the buffer memory 200. This means that the data input / output operation of the buffer memory 200 may be performed through the SSD controller 100. The buffer memory 200 may be provided outside the SSD controller 100 as shown in FIG. 1 or may be provided inside the SSD controller 100. The buffer memory may be configured as a randomly accessible memory such as DRAM or SRAM.

데이터 저장부(300)는 SSD(500)의 메인 스토리지이다. 데이터 저장부(300)는 하드 디스크 드라이브(HDD)의 플래터(platter) 대신에 반도체 메모리 칩들을 사용하여 데이터를 저장한다. 데이터 저장부(300)는 불휘발성 메모리 또는 휘발성 메모리로 구성될 수 있다. SSD 컨트롤러(100)와 데이터 저장부(300) 사이에는 복수의 채널들(예를 들면, N개)이 구성될 수 있다. 그리고, 각각의 채널에는 복수 개의 웨이(예를 들면, M개)가 구성될 수 있다. 채널 및 웨이에 대한 상세 구성은 도 3을 참조하여 상세히 설명될 것이다.The data storage unit 300 is main storage of the SSD 500. The data storage unit 300 stores data using semiconductor memory chips instead of a platter of a hard disk drive (HDD). The data storage unit 300 may be configured as a nonvolatile memory or a volatile memory. A plurality of channels (for example, N) may be configured between the SSD controller 100 and the data storage unit 300. Each channel may include a plurality of ways (eg, M). A detailed configuration of the channel and the way will be described in detail with reference to FIG. 3.

본 발명에서는 데이터 저장부(300)가 불휘발성 메모리인 플래시 메모리로 구성되는 경우에 대해 예시적으로 설명될 것이다. 그러나, 본 발명에서 데이터 저장부(300)에 적용되는 메모리는 특정 종류 및 특정 형태에만 국한되지 않고 다양한 형태로 구성될 수 있다. 예를 들면, 데이터 저장부(300)에 적용되는 메모리는 플래시 메모리뿐만 아니라 MRAM, PRAM 등의 불휘발성 메모리를 포함할 수 있다. 또한, 데이터 저장부(300)에 적용되는 메모리는 DRAM 등과 같은 휘발성 메모리를 포함할 수 있다. 데이터 저장부(300)는, 적어도 하나의 불휘발성 메모리와 적어도 하나의 휘발성 메모리가 혼합된 형태로 구성될 수도 있고, 적어도 두 종류 이상의 불휘발성 메모리들이 혼합된 형태로 구성될 수도 있다. In the present invention, a case in which the data storage unit 300 is composed of a flash memory which is a nonvolatile memory will be described. However, in the present invention, the memory applied to the data storage unit 300 may be configured in various forms without being limited to a specific kind and a specific form. For example, the memory applied to the data storage unit 300 may include not only flash memory but also nonvolatile memory such as MRAM and PRAM. In addition, the memory applied to the data storage unit 300 may include a volatile memory such as DRAM. The data storage unit 300 may be configured by mixing at least one nonvolatile memory and at least one volatile memory, or may be configured by mixing at least two types of nonvolatile memories.

또한, 데이터 저장부(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 data storage unit 300 may be configured in various forms. For example, flash memories may consist of single-level flash memory cells in which one bit of data is stored per cell, or may consist of multi-level flash memory cells in which a plurality of bits of data are stored per cell. The type of memory cells constituting the flash memories may also be configured in various forms. For example, the flash memories may be configured of at least one of a NAND flash memory, a NOR flash memory, and a One_NAND flash memory (where the flash memory core and the memory control logic are implemented in a single chip). The flash memories may also be configured in a hybrid form in which at least two kinds of flash memories are mixed. In addition, the structure of the charge storage layer of the memory cell of the flash memories may also be configured in various forms. For example, the charge storage layer of the memory cell may be made of conductive polycrystalline silicon or the like, or may be formed using an insulating film such as Si 3 N 4, Al 2 O 3, HfAlO, HfSiO, or the like. A flash memory structure using an insulating film such as Si 3 N 4, Al 2 O 3, HfAlO, HfSiO, or the like as a charge storage layer is also referred to as a charge trap flash (“CTF”) memory.

SSD 컨트롤러(100)는 호스트(900)로부터 입력된 커멘드에 응답하여 버퍼 메모리(200)와 데이터 저장부(300)로/로부터 데이터를 기록하는/읽는 동작을 제어한다. SSD 컨트롤러(100)는 SSD의 제반 동작을 제어하며, SSD 컨트롤러로 불리기도 한다. 아래에서 상세히 설명되겠지만, 본 발명의 본 발명의 SSD 컨트롤러(100)는 데이터 저장부(300)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)로/로부 터 데이터를 기록하는/읽는 동작을 제어한다. 또한, 본 발명의 본 발명의 SSD 컨트롤러(100)는, 플래시 메모리들의 기록 동작시 버퍼 메모리(200)에 저장된 데이터가 복수의 채널들과 복수의 웨이들로 분산되어 저장될 수 있도록 플래시 기록 오퍼레이션들을 스케쥴링한다. 버퍼 메모리(200)에 대한 데이터 저장 방식과, 버퍼 메모리(200)에 저장된 데이터와 관련된 플래시 기록 오퍼레이션들에 대한 스케줄링 동작은 SSD 컨트롤러(100)에 탑재된 제어 알고리즘에 의해 수행될 수 있다. The SSD controller 100 controls an operation of writing / reading data to / from the buffer memory 200 and the data storage unit 300 in response to a command input from the host 900. The SSD controller 100 controls overall operations of the SSD and is also called an SSD controller. As will be described in detail below, the SSD controller 100 of the present invention writes / reads data to / from the buffer memory 200 based on the channel and way structure of the data storage unit 300. To control. In addition, the SSD controller 100 of the present invention performs flash write operations such that data stored in the buffer memory 200 may be distributed and stored in a plurality of channels and a plurality of ways during a write operation of the flash memories. Schedule. A data storage method for the buffer memory 200 and a scheduling operation for flash write operations related to data stored in the buffer memory 200 may be performed by a control algorithm mounted in the SSD controller 100.

도 2는 도 1에 도시된 SSD 컨트롤러(100)의 상세 구성을 보여주는 도면이다. 2 is a diagram illustrating a detailed configuration of the SSD controller 100 shown in FIG. 1.

도 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 SSD controller 100 may include a CPU 110, an internal memory 120, a buffer memory control unit 130, and a host interface 170. A host I / F in the figure), and a flash interface 180 (indicated by the flash I / F in the figure). The CPU 110, the internal memory 120, the buffer memory controller 130, the host interface 170, and the flash interface 180 may be interconnected through a CPU bus.

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 CPU 10 controls overall operations of the SSD controller 100. One or more CPUs 110 may be provided in the SSD controller 100. The case where one CPU 110 is provided is called a single core processor. A case where a plurality of CPUs 110 are provided is called a multi-core processor. The CPU 110, the internal memory 120, and the buffer memory controller 130 may form control logic. The control logic composed of the CPU 110, the internal memory 120, and the buffer memory controller 130 may be configured in a single chip form based on a system on chip (SoC) technology. The host interface 170 and the flash interface 180 may be further included in the single chip constituting the control logic.

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 SSD controller 100 may be stored in the form of firmware or software in the SSD controller 100. By the control algorithm stored or mounted in the SSD controller 100, the CPU 110, the internal memory 120, the buffer memory controller 130, the host interface 170, and the flash interface 180 may be operated. . The control algorithm may be stored in the code area of the internal memory 120. The additional information processed by the control algorithm (eg, mapping information) may be stored in the data area of the internal memory 120. The internal memory 120 may be provided inside the CPU 110 or may be provided outside the CPU 110. The logical hierarchical structure and function of the control algorithm performed in the SSD controller 100 of the present invention will be described in detail with reference to FIG. 4. Meanwhile, in the present invention, a case in which the control algorithm performed by the SSD controller 100 is mounted on the SSD controller 100 in the form of firmware or software will be described. However, each component included in the control algorithm may be configured not only in the form of firmware or software but also in the form of hardware.

호스트 인터페이스(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 host interface 170 exchanges commands, addresses, and data with the host 900 under the control of the CPU 110. The host interface 170 includes a universal serial bus (USB), a multimedia card (MMC), a PCI Express (PCI-E), an AT attachment (ATA), a serial AT attachment (SATA), a parallel AT attachment (PATA), and a small computer system (SCSI). It can support one of a variety of interfaces such as Interface (Serial), Serial Attached SCSI (SAS), Enhanced Small Disk Interface (ESDI), and Integrated Drive Electronics (IDE). The buffer memory controller 130 controls access operations (eg, read / write / erase operations) of the internal memory 120 and the buffer memory 200 in response to the control of the CPU 110. The flash interface 180 transmits and receives data between the internal memory 120 and / or the buffer memory 200 and the data storage unit 300, and transmits and receives data between the internal memory 120 and the buffer memory 200. To perform.

호스트(900)로부터 읽기 커멘드(read command)가 입력되면, 데이터 저장부(300)로부터 읽어온 읽기 데이터(read data)는 플래시 인터페이스(180) 및 버퍼 메모리 제어부(130)를 통해 버퍼 메모리(200)에 임시 저장된다. 버퍼 메모리(200)에 임시 저장된 읽기 데이터는 버퍼 메모리 제어부(130)와 호스트 인터페이스(170)를 통해 외부(또는 호스트(900))로 출력된다. When a read command is input from the host 900, the read data read from the data storage unit 300 is transferred to the buffer memory 200 through the flash interface 180 and the buffer memory controller 130. Is stored temporarily. The read data temporarily stored in the buffer memory 200 is output to the outside (or the host 900) through the buffer memory controller 130 and the host interface 170.

한편, 호스트(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 host 900 may be largely performed by two steps. The first step is a step in which write data input through the host interface 170 is temporarily stored in the buffer memory 200 through the buffer memory controller 130. The second step is a step in which write data temporarily stored in the buffer memory 200 is stored in the data storage unit 300 through the buffer memory controller 130 and the flash interface 180. In the present invention, the first step is referred to as a buffer memory write operation, and the second step is referred to as a flash write operation.

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 CPU 110 provides a signal to the host 900 through the host interface 170 indicating that the write command is finished. And, the flash write operation that has not yet been processed is performed internally in SSD 100 when the CPU 110 is not busy. The SSD 100 of the present invention queues the write operation without issuing a flash write operation each time the buffer write operation is completed. The queued flash write operations are then scheduled so that a plurality of flash write operations can be performed in parallel on the plurality of channels and the plurality of ways. Queuing and scheduling operations of flash write operations in accordance with the present invention will be described in detail below with reference to FIGS.

이 외에도, 본 발명에서는 버퍼 기록 오퍼레이션의 수행시, 플래시 메모리의 채널 및 웨이 구조를 고려하여 기록 데이터를 버퍼 메모리(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 buffer memory 200 in consideration of the channel and way structure of the flash memory. As a result, it becomes easy to process write data stored in the buffer memory 200 for each channel and way when performing a flash write operation. A data distributed storage method of the buffer memory 200 according to the present invention will be described in detail below with reference to FIGS. 6 to 8.

읽기/기록 데이터에 대한 임시 저장 기능은, 버퍼 메모리(200) 외에도 내부 메모리(120)의 데이터 영역을 이용하여 수행될 수 있다. 읽기/기록 데이터의 용량이 커질수록 읽기/기록 데이터를 임시 저장하는 기능은 내부 메모리(120) 보다는 버퍼 메모리(200)에서 주로 수행될 것이다. 본 발명에서는 임시 저장 기능을 수행할 수 있는 메모리 중에서, 버퍼 메모리(200)의 데이터 저장 방식에 대해 예시적으 로 설명될 것이다. 그러나, 이는 본 발명이 적용되는 일 예로서, 본 발명에 따른 버퍼 메모리의 데이터 저장 방식은 내부 메모리(120) 또는 이에 상응하는 메모리에도 모두 적용될 수 있다. The temporary storage function for the read / write data may be performed using a data area of the internal memory 120 in addition to the buffer memory 200. As the capacity of the read / write data increases, the function of temporarily storing the read / write data will be mainly performed in the buffer memory 200 rather than the internal memory 120. In the present invention, among the memories capable of performing the temporary storage function, a data storage method of the buffer memory 200 will be exemplarily described. However, this is an example to which the present invention is applied, and the data storage method of the buffer memory according to the present invention may be applied to both the internal memory 120 or a memory corresponding thereto.

도 3은 도 1에 도시된 데이터 저장부(300)의 채널 및 웨이의 구성을 예시적으로 보여주는 도면이다. 3 is a diagram illustrating a configuration of a channel and a way of the data storage unit 300 shown in FIG. 1.

도 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 SSD controller 100 and the data storage unit 300. A plurality of flash memories 310, 320, and 330 may be electrically connected to each channel CH0, CH1,..., CH (N-1). Each channel CH0 to CH (N-1) represents an independent bus capable of transmitting and receiving commands and data to corresponding flash memories. Flash memories 310, 320, and 330 connected to different channels CH0, CH1,..., And CH (N-1) may operate independently. The plurality of flash memories 310, 320, and 330 connected to each channel may constitute a plurality of ways (eg, M) way0 to way (M-1). A total of M flash memory chips may be connected to the M ways configured in each channel.

예를 들면, 참조번호 310의 플래시 메모리들은 0번 채널(CH0)에서 M 개의 웨이들(way0∼way(M-1))을 구성할 수 있다. 0번 채널(CH0)의 각 웨이에는 대응되는 플래시 메모리 칩(311-31m)이 접속될 수 있다. 이와 같은 플래시 메모리들과 각각의 채널과 각각의 웨이와의 접속 관계는, 참조번호 320의 플래시 메모리들 및 참조번호 330의 플래시 메모리들에도 모두 적용될 수 있다.  For example, the flash memories 310 may constitute M ways way0 to way (M-1) in channel 0 (CH0). Corresponding flash memory chips 311-31m may be connected to each way of channel 0 (CH0). The connection relationship between the flash memories and each channel and each way may be applied to both the flash memories 320 and the flash memories 330.

웨이(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, way 1 of channel 0, CH0, represents a flash memory chip 311. The second wayway2 of the first channel CH1 represents a flash memory chip 323. Whether a command provided from a host is performed on a flash memory chip of which channel of a channel may be determined by a logical block address (LBA) transmitted from the host 900. That is, each flash memory chip constituting the data storage unit 300 manages an address according to corresponding channel and way information.

각각의 플래시 메모리 칩에 저장될/읽혀진 데이터는 버퍼 메모리(200)에 임시 저장된다. 버퍼 메모리(200)는 DRAM 또는 SRAM으로 구성될 수 있다. 버퍼 메모리(200)는 플래시 메모리와 다른 종류의 메모리로 구성되기 때문에 읽기/기록 특성이 플래시 메모리와 다르다. 그리고, 버퍼 메모리(200)는 플래시 메모리처럼 채널 및 웨이 구성을 가지고 있지 않는다. 따라서, 기록 커멘드의 처리시 버퍼 메모리(200)에서 수행되는 버퍼 기록 오퍼레이션은 플래시 메모리의 채널 및 웨이 구성과 무관하게 수행될 수 있다. 그러므로, 본 발명에 따른 버퍼 메모리(200)의 데이터 저장 방식 및 스케쥴링 방식이 적용되지 않을 경우, 플래시 기록 오퍼레이션이 수행중인 채널로 다른 플래시 기록 오퍼레이션이 연속해서 이슈될 수 있다. 동일한 채널에 연속해서 플래시 기록 오퍼레이션이 이슈되는 경우, 나중에 이슈된 플래시 오퍼레이션은 먼저 수행중인 플래시 오퍼레이션이 종료될 때까지 대기하여야 한다. 이는 플래시 메모리에서 원치 않는 동작 지연을 유발할 수 있다. Data to be stored / read in each flash memory chip is temporarily stored in the buffer memory 200. The buffer memory 200 may be composed of DRAM or SRAM. Since the buffer memory 200 is composed of a flash memory and a different type of memory, the read / write characteristics are different from those of the flash memory. The buffer memory 200 does not have a channel and way configuration like the flash memory. Therefore, the buffer write operation performed in the buffer memory 200 during the processing of the write command may be performed regardless of the channel and way configuration of the flash memory. Therefore, when the data storage method and the scheduling method of the buffer memory 200 according to the present invention are not applied, another flash write operation may be continuously issued to the channel on which the flash write operation is being performed. If flash write operations are issued consecutively on the same channel, later flash operations that have been issued must first wait until the flash operation being performed is finished. This can cause unwanted operating delays in flash memory.

이와 같은 문제점을 방지하기 위해, 본 발명에서는 기록 커멘드의 버퍼 기록 오퍼레이션의 수행시 플래시 메모리의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)에 기록 데이터를 분산 저장한다. 그리고, 버퍼 메모리(200)에 저장된 데이터가 복수의 채널들과 복수의 웨이들에 분산되어 제공될 수 있도록 플래시 기록 오퍼레이션들을 스케쥴링한다. 그 결과, 플래시 메모리와 버퍼 메모리(200)의 물리적인 구성의 차이(예를 들면, 채널 및 웨이의 구성)로 인해 발생될 수 있는 지연시간이 방지된다. 그리고, 복수의 채널에서 복수 개의 플래시 기록 오퍼레이션들이 병렬로 수행될 수 있게 되어, SSD(500)의 전체 성능이 향상된다. In order to prevent such a problem, in the present invention, write data is distributed and stored in the buffer memory 200 based on the channel and way structure of the flash memory when the buffer write operation of the write command is performed. Then, the flash write operations are scheduled so that data stored in the buffer memory 200 can be distributed and provided in a plurality of channels and a plurality of ways. As a result, delay time that may occur due to differences in the physical configuration of the flash memory and the buffer memory 200 (for example, the configuration of the channel and the way) is prevented. In addition, a plurality of flash write operations may be performed in parallel on a plurality of channels, thereby improving overall performance of the SSD 500.

도 4는 본 발명의 SSD 컨트롤러(100)에서 수행되는 제어 알고리즘의 논리적인 계층 구조를 보여주는 도면이고, 도 5는 도 4에 도시된 제어 알고리즘의 동작을 설명하기 위한 도면이다.4 is a diagram illustrating a logical hierarchical structure of a control algorithm performed by the SSD controller 100 of the present invention, and FIG. 5 is a diagram for describing an operation of the control algorithm illustrated in FIG. 4.

도 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 SSD controller 100 of the present invention may include a host interface layer (10), a cache interface layer (20), and a flash translation layer (Flash). Translation Layer 50) (hereinafter referred to as FTL), and Flash Interface Layer 60;

데이터 저장부(300)를 구성하는 플래시 메모리는, 재기록(overwrite)이 불가능한 불휘발성 메모리이다. 그러므로, 데이터가 기록될 플래시 메모리 셀들은 반드시 소거(erase)된 상태에 있어야만 한다. 그러나, 플래시 메모리에서 프로그램 되는 데이터의 단위는 소거되는 데이터의 단위와 서로 다르다. 예를 들면, 플래시 메 모리는 페이지 단위로 프로그램 되는 반면, 소거 동작은 블록 단위로 수행된다. 1개의 블록은 복수 개의 페이지들로 구성된다. 빈번한 소거 동작은 플래시 메모리의 수명을 단축시킬 수 있다. 따라서, 소거 횟수를 최소화 하면서도 소거된 메모리 셀들 중에서 프로그램 될 메모리 셀들을 지정해 주기 위해 FTL(50)이 사용된다. The flash memory constituting the data storage unit 300 is a nonvolatile memory that cannot be overwritten. Therefore, the flash memory cells to which data is to be written must be in an erased state. However, the unit of data programmed in the flash memory is different from the unit of data to be erased. For example, flash memory is programmed in units of pages, while erase operations are performed in units of blocks. One block is composed of a plurality of pages. Frequent erase operations can shorten the life of flash memory. Accordingly, the FTL 50 is used to designate memory cells to be programmed among erased memory cells while minimizing the number of erase operations.

FTL(50)은 호스트로부터 제공된 논리 블록 어드레스(LBA)를 LPN(Logical Page Number)로 변환한다. 그리고, FTL(50)은 변환된 LPN 을 소거된 플래시 메모리의 물리 블록 어드레스(Physical Block Address ; PBA)로 맵핑 시켜 주는 어드레스 맵핑 기능을 수행한다. 이 외에도, FTL(50)은 배드 블록 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 마모도 관리 등의 기능을 수행한다. 플래시 메모리(310-330)의 어드레스 맵핑 정보는 플래시 메모리(310-330)의 임의의 영역(예를 들면, 메타 영역)에 저장될 수 있고, 저장된 어드레스 맵핑 정보는 파워-업 동작시 내부 메모리(120) 또는 버퍼 메모리(200)로 로딩될 수 있다. The FTL 50 converts a logical block address (LBA) provided from a host into a logical page number (LPN). The FTL 50 performs an address mapping function that maps the converted LPN to a physical block address (PBA) of the erased flash memory. In addition, the FTL 50 performs functions such as bad block management, data retention management due to unexpected power shutdown, and wear management. The address mapping information of the flash memory 310-330 may be stored in any area (eg, a meta area) of the flash memory 310-330, and the stored address mapping information may be stored in the internal memory during power-up operation. 120 or the buffer memory 200.

호스트 인터페이스 계층(10)은, 호스트(900)와 호스트 인터페이스(170)에서 수행되는 인터페이스 동작을 제어하는 기능을 수행한다. 호스트 인터페이스 계층(10)의 기능이 프로그램된 소프트웨어 또는 펌웨어는, 호스트 인터페이스(170)에 직접 탑재될 수도 있고, 내부 메모리(120)에 저장되어 호스트 인터페이스(170)의 동작을 제어하는데 사용될 수도 있다. 플래시 인터페이스 계층(60)은 플래시 인터페이스(180)와 데이터 저장부(300)에 구비된 플래시 메모리들 사이에서 수행되는 인터페이스 동작을 제어하는 기능을 수행한다. 플래시 인터페이스 계층(60)의 기능이 프로그램 된 소프트웨어 또는 펌웨어는, 플래시 인터페이스 계층(60)에 직접 탑 재될 수도 있고, 내부 메모리(120)에 저장되어 플래시 인터페이스 계층(60)의 동작을 제어하는데 사용될 수도 있다. The host interface layer 10 performs a function of controlling interface operations performed by the host 900 and the host interface 170. Software or firmware programmed with the functions of the host interface layer 10 may be directly mounted in the host interface 170 or may be stored in the internal memory 120 and used to control the operation of the host interface 170. The flash interface layer 60 controls the interface operation performed between the flash interface 180 and the flash memories provided in the data storage unit 300. Software or firmware in which the functions of the flash interface layer 60 are programmed may be directly mounted to the flash interface layer 60 or stored in the internal memory 120 to be used to control the operation of the flash interface layer 60. have.

캐시 인터페이스 계층(20)은 버퍼 메모리 제어부(130)에서 수행되는 내부 메모리(120) 및/또는 버퍼 메모리(200)의 읽기/기록 동작을 제어하는 기능을 수행한다. 캐시 인터페이스 계층(20)의 기능이 프로그램 된 소프트웨어 또는 펌웨어는, 버퍼 메모리 제어부(130)에 직접 탑재될 수도 있고, 내부 메모리(120)에 저장되어 버퍼 메모리 제어부(130)의 동작을 제어하는데 사용될 수도 있다. 캐시 인터페이스 계층(20)은 버퍼 매니저(Buffer Manager ; 30)와 스케쥴러(Scheduler ; 40)를 포함한다. The cache interface layer 20 controls a read / write operation of the internal memory 120 and / or the buffer memory 200 performed by the buffer memory controller 130. The software or firmware in which the functions of the cache interface layer 20 are programmed may be directly mounted in the buffer memory controller 130 or may be stored in the internal memory 120 and used to control the operation of the buffer memory controller 130. have. The cache interface layer 20 includes a buffer manager 30 and a scheduler 40.

버퍼 매니저(30)는 플래시 메모리(310-330)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리(200)에 저장되는 데이터를 관리하는 기능을 수행한다. 예를 들면, 버퍼 매니저(30)는 버퍼 메모리(200)에 포함된 복수 개의 섹터들을 볼륨(Volume)과 뱅크(Bank) 단위로 구분한다. 그리고, 볼륨 및 뱅크 단위로 구분된 각각의 섹터에 데이터를 분산 저장한다. 버퍼 메모리(200)의 볼륨은 플래시 메모리의 채널에 대응될 수 있다. 버퍼 메모리(200)의 뱅크는 플래시 메모리의 웨이에 대응될 수 있다. 버퍼 메모리(200)의 볼륨 및 뱅크의 물리적인 구성은 도 6에서 상세히 설명될 것이다.The buffer manager 30 manages data stored in the buffer memory 200 based on the channel and way structures of the flash memories 310-330. For example, the buffer manager 30 divides a plurality of sectors included in the buffer memory 200 in volume and bank units. The data is distributed and stored in each sector divided by volume and bank unit. The volume of the buffer memory 200 may correspond to a channel of the flash memory. The bank of the buffer memory 200 may correspond to the way of the flash memory. The physical configuration of the volume and bank of the buffer memory 200 will be described in detail with reference to FIG. 6.

버퍼 매니저(30)는 버퍼 메모리(200)에 저장될 데이터를 볼륨 및 뱅크 단위로 분산시키는데 플래시 메모리(310-330)의 LPN을 사용할 수 있다. LPN은 FTL(50)에서 관리되는 논리적인 데이터 단위를 의미한다. 플래시 메모리(310-330)의 LPN과 버퍼 메모리(200)의 볼륨 및 뱅크 사이의 맵핑 정보는 내부 메모리(120) 또는 버퍼 메모리(200)에 저장될 수 있다. 버퍼 메모리(200)의 맵핑 정보는 맵핑 테이블 형태로 저장될 수 있다. 버퍼 매니저(30)는 버퍼 메모리(200)에 데이터가 분산 저장되고 나면(즉, 버퍼 기록 오퍼레이션이 수행되고 나면), 플래시 기록 오퍼레이션을 FTL(50)로 이슈하지 않고 스케쥴러(40)에 등록한다. 본 발명에서는 스케쥴러(40)에 등록되는 각각의 플래시 기록 오퍼레이션을 잡유닛(JobUnit)이라 정의한다. 하나의 잡유닛에 대응되는 기록 데이터는 버퍼 메모리(200)의 하나의 캐시라인에 의해 지정된 하나의 섹터로부터 제공될 수 있다.The buffer manager 30 may use the LPNs of the flash memories 310 to 330 to distribute data to be stored in the buffer memory 200 in volume and bank units. LPN means a logical data unit managed by the FTL 50. Mapping information between the LPN of the flash memory 310-330 and the volume and the bank of the buffer memory 200 may be stored in the internal memory 120 or the buffer memory 200. Mapping information of the buffer memory 200 may be stored in the form of a mapping table. After data is distributed and stored in the buffer memory 200 (ie, after a buffer write operation is performed), the buffer manager 30 registers the flash write operation with the scheduler 40 without issuing the FTL 50. In the present invention, each flash write operation registered in the scheduler 40 is defined as a job unit (JobUnit). The write data corresponding to one job unit may be provided from one sector designated by one cache line of the buffer memory 200.

스케쥴러(40)는, 버퍼 메모리(200)에 분산 저장된 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 제공될 수 있도록, 플래시 기록 오퍼레이션들을 스케쥴링한다. 구체적으로, 스케쥴러(40)는 각각의 잡유닛(JobUnit)에 대응되는 버퍼 메모리(200)의 볼륨 및 뱅크 정보를 고려하여 잡유닛 플레이트(JobUnit Plate)를 구성한다. 1개의 잡유닛 플레이트에는 복수 개의 잡유닛들이 포함되며, 복수 개의 잡유닛 플레이트들은 잡유닛 박스(JobUnit Box)를 구성할 수 있다. 스케쥴러(40)는 버퍼 매니저(30)로부터 제공된 플래시 기록 오퍼레이션들이 하나의 잡유닛 플레이트를 형성할 때마다 잡유닛 플레이트에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다. 이슈된 복수 개의 플래시 기록 오퍼레이션들에서 기록될 데이터는, 버퍼 메모리(200)의 하나의 캐시웨이에 의해 지정된 복수 개의 섹터들로부터 제공될 것이다. The scheduler 40 schedules flash write operations so that data distributed and stored in the buffer memory 200 may be distributed and provided to a plurality of channels and a plurality of ways of the data storage unit 300. In detail, the scheduler 40 configures a job unit plate in consideration of volume and bank information of the buffer memory 200 corresponding to each job unit. One job unit plate includes a plurality of job units, and the plurality of job unit plates may constitute a job unit box. The scheduler 40 issues a plurality of flash write operations corresponding to the job unit plate to the FTL 50 whenever the flash write operations provided from the buffer manager 30 form one job unit plate. Data to be written in a plurality of flash write operations at issue may be provided from a plurality of sectors designated by one cacheway of the buffer memory 200.

FTL(50)은 스케쥴러(40)로부터 이슈된 복수 개의 플래시 기록 오퍼레이션들 에 응답해서, 각각의 플래시 기록 오퍼레이션에 대응되는 LPN을 대응되는 플래시 메모리의 PBA로 맵핑한다. 그리고, 맵핑된 PBA에 대응되는 플래시 메모리에 데이터를 기록한다. 본 발명에 따른 잡유닛, 잡유닛 플레이트, 및 잡유닛 박스의 구성과, 스케쥴러(40)에서 수행되는 커멘드 스케쥴링 방법은 도 9 내지 도 11을 참조하여 아래에서 상세히 설명될 것이다. In response to the plurality of flash write operations issued from the scheduler 40, the FTL 50 maps the LPN corresponding to each flash write operation to the PBA of the corresponding flash memory. Data is then written to the flash memory corresponding to the mapped PBA. The configuration of the job unit, the job unit plate, and the job unit box according to the present invention, and the command scheduling method performed by the scheduler 40 will be described in detail below with reference to FIGS. 9 to 11.

도 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 buffer memory 200 according to the present invention. 6 exemplarily shows a configuration of one cache way 210.

도 6을 참조하면, 버퍼 메모리(200)는 복수 개의 섹터들로 구성될 수 있다. 복수 개의 섹터들은 복수 개(예를 들면, N개)의 볼륨들과, 복수 개(예를 들면, M개)의 뱅크들의 교차 영역에 배치될 수 있다. 볼륨은 플래시 메모리의 채널에 대응될 수 있고, 뱅크는 플래시 메모리의 웨이에 대응될 수 있다. 여기서, 볼륨의 개수를 나타내는 N은 데이터 저장부(300)에 형성된 채널들의 개수에 대응될 수 있다. 그리고, 뱅크의 개수를 나타내는 M은 데이터 저장부(300)에 형성된 웨이들의 개수에 대응될 수 있다. N 및 M은 데이터 저장부(300)의 채널 및 웨이의 개수에 따라서 변경될 수 있다. N 및 M은 서로 다른 값을 가질 수도 있고 서로 동일한 값을 가질 수도 있다. Referring to FIG. 6, the buffer memory 200 may be composed of a plurality of sectors. The plurality of sectors may be disposed in an intersection area of a plurality of (eg, N) volumes and a plurality of (eg, M) banks. The volume may correspond to a channel of the flash memory, and the bank may correspond to a way of the flash memory. Here, N representing the number of volumes may correspond to the number of channels formed in the data storage unit 300. In addition, M representing the number of banks may correspond to the number of ways formed in the data storage unit 300. N and M may be changed according to the number of channels and ways of the data storage unit 300. N and M may have different values or may have the same value.

본 발명에서는 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 cacheway 210. The logical address of one sector corresponding to one volume and one bank is defined as one cache line. A plurality of cacheways may correspond to the buffer memory. N cache lines arranged in a column direction in each cache way may form one cache line group 220_i. One cache way 210 may include M cache line groups 220_0, 220_1,..., 220_ (M-1). N cache lines included in each cache line group 220_i may correspond to N channels, respectively.

도 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 buffer memory 200 according to the present invention. 7 and 8 exemplarily illustrate a case in which one cacheway is composed of eight volumes and eight banks. In FIG. 7, a configuration of one cashway is mainly illustrated, and in FIG. 8, a configuration between a plurality of cashways is illustrated.

도 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 buffer memory 200 according to the present invention, the plurality of cacheways 210_0, 210_1,... May be sequentially arranged in the buffer memory 200. . Each cacheway 210_i may include a plurality of cache line groups 220_0, 220_1,..., 220_7. The plurality of cache line groups 220_0, 220_1,..., 220_7 may be sequentially arranged in the corresponding cacheway 210_i. Each cache line group 220_i may include a plurality of cache lines (eg, Cache Line0, Cache Line1, ...). The plurality of cache lines Cache Line0, Cache Line1, ... may be sequentially arranged in the corresponding cache line group 220_i.

도 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 buffer memory 200 illustrated in FIGS. 7 and 8 is a cache line i. Each cache line corresponds to one sector of the buffer memory 200. One sector can store, for example, 512 bytes of data. Eight sectors may correspond to one page of flash memory. The logical addresses illustrated in FIGS. 7 and 8 may correspond to physical locations of the sectors illustrated in FIG. 6 based on a cache line i as a basic unit.

예를 들어, 호스트(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 host 900, the logical block address LBA is converted into the LPN by the FTL 50. The buffer manager 30 determines the physical address (ie, volume and bank) of the buffer memory 200 corresponding to the LPN with reference to the converted LPN. As the logical address of the buffer memory 200, the LPN converted by the FTL 50 may be directly used, or the logical address of the cache line i calculated from the LPN in units of sectors may be used. Determining a physical address of the buffer memory 200 may be referred to as mapping a logical address of the buffer memory 200 to a physical address. The buffer memory controller 130 stores the mapping result of the logical address and the physical address of the buffer memory 200 in the internal memory 120 or the buffer memory under the control of the buffer manager 30. The mapping result may be stored in the form of a mapping table.

버퍼 메모리(200)의 물리 어드레스가 결정되고 나면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 기록 데이터(write data)를 해당 물리 어드레스의 섹터에 저장한다. 기록 데이터를 버퍼 메모리(200)에 저장하는 과정을 버퍼 기록 오퍼레이션이라 한다. 버퍼 기록 오퍼레이션이 수행되고 나면, 버퍼 매 니저(30)는 버퍼 기록 오퍼레이션이 수행된 볼륨과 뱅크 정보를 고려하여 대응되는 플래시 기록 오퍼레이션을 스케쥴러(40)에 등록한다. After the physical address of the buffer memory 200 is determined, the buffer memory controller 130 stores write data in a sector of the corresponding physical address under the control of the buffer manager 30. The process of storing write data in the buffer memory 200 is called a buffer write operation. After the buffer write operation is performed, the buffer manager 30 registers the corresponding flash write operation to the scheduler 40 in consideration of the volume and bank information on which the buffer write operation is performed.

도 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 buffer memory 200, the scheduler 40 queues the flash write operations registered by the buffer manager 30 in job units. The scheduler 40 schedules the queued flash write operations to be distributed to a plurality of channels and a plurality of ways of the data storage unit 300 to be issued. The queued flash write operations are issued to the FTL 50 in predetermined units (eg, job unit plate units) according to the scheduling result of the scheduler 40. As a result, the write data distributed and stored in the buffer memory 200 may be distributed and stored in the plurality of channels and the plurality of ways of the data storage unit 300.

본 발명에서는 스케쥴러(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 scheduler 40 is defined as a job unit (JobUnit) 410. The plurality of job units may configure one plate (JobUnit Plate) 420. For example, when N channels and M ways are provided in the data storage unit 300, the sectors of the buffer memory 200 may be divided into N volumes and M banks. In this case, one job unit plate may include N × M job units.

도 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 data storage unit 300 and eight banks (or ways) are provided. It is. However, this is an example to which the present invention is applied, and the number of job units constituting the job unit plate 420 may vary depending on the number of volumes (or channels) and the number of banks (or ways). Can be.

복수 개의 잡유닛 플레이트들은 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 job unit box 430. The job unit plate configured at the bottom of the plurality of job unit plates included in the job unit box 430 is called a base plate. The base plate has a configuration of substantially the same volume and bank as the respective job unit plates included in the job unit box 430. The depth of the job unit box may be configured to have a predetermined size (eg depth = M) (M is a natural number). The depth of the job unit box 430 may mean the number of job unit plates 420 that may be included in the job unit box 430. The depth of the job unit box 430 may vary depending on the size of the capacity of data that can be queued by the scheduler.

도 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 buffer manager 30 registers a corresponding flash write operation to the scheduler 40. The scheduler 40 continuously queues the flash write operations registered by the buffer manager 30 in the form of a job unit without the FTL 50 issue (see 410_0, 410_1, and 410_2 in Fig. 10).

각각의 잡유닛은 각각의 플래시 기록 오퍼레이션에 대응되는 볼륨 및 뱅크 정보(또는 채널 및 웨이 정보)에 따라서 잡유닛 플레이트 상에 고유의 위치를 가질 수 있다. 예를 들면, 참조번호 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 bank 7. Job units denoted by reference numerals 410_1 and 410_2 may be defined as job units corresponding to volume 1 and bank 2. The write operations 410_1 and 410_2 corresponding to the same volume and the same bank are stacked in the vertical direction at corresponding positions of the job unit plate. The number of job units stackable in the same position may be determined by the depth of the job unit box.

스케쥴러(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 scheduler 40 generates a plurality of flash write operations corresponding to the job unit plate 420 whenever the queued job units 410_0, 410_1, and 410_2 constitute one job unit plate 420. Issues). The job unit plate 420 configured at this time corresponds to the base plate located at the lowest position of the job unit box. Job units 410_0, 410_1, and 410_2 that have not been issued continue to be queued by the scheduler 40. The scheduler 40 queues a new job unit to existing job units 410_0, 410_1, and 410_2 whenever a new flash write operation is registered. The scheduler 40 issues flash write operations corresponding to the newly configured job unit plate to the FTL 50 when the queued job units constitute a new job unit plate (ie, base plate).

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 FTL 50 are flash write operations to be performed on the N channels and the M ways of the data storage 300. The FTL 50 performs address mapping to convert the Logical Page Numbers (LPNs) of the plurality of operations at issue into Physical Block Addresses (PBAs) of the flash memory. In the PBAs of the flash memory of the N channels and the M ways, write data provided from the N volumes and the M banks of the buffer memory 200 are stored, respectively. At this time, the flash write operation performed on the flash memories of the N channels and the M ways may be performed in parallel or simultaneously on the N channels. As a result, channel utilization and data storage performance of the SSD 500 are effectively improved.

도 11은 본 발명에 따른 SSD(500)의 데이터 저장 방법을 보여주는 흐름도이다.11 is a flowchart illustrating a data storage method of the SSD 500 according to the present invention.

도 11을 참조하면, 호스트(900)로부터 기록 커멘드(write command)가 입력되면, 호스트 인터페이스(170)는 호스트 인터페이스 계층(10)의 제어에 따라서 버퍼 메모리 제어부(130)로 캐시라인을 요청한다(S1000 단계). 캐시라인은 기록 커멘드에 의해 기록 요청된 데이터(즉, 기록 데이터)가 임시 저장될 섹터를 나타낸다. Referring to FIG. 11, when a write command is input from the host 900, the host interface 170 requests a cache line to the buffer memory controller 130 under the control of the host interface layer 10 ( S1000 step). The cache line indicates a sector in which data requested for recording by the write command (ie, write data) will be temporarily stored.

버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 버퍼 메모리(200) 내에 빈 캐시라인이 존재하는지 여부를 판별한다(S1100 단계). S1100 단계에서의 판별 결과 빈 캐시라인이 존재하면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 기록 데이터가 저장될 캐시라인을 할당 받는다. 그리고 나서, 버퍼 메모리 제어부(130)는 할당된 캐시라인에 기록 데이터를 임시 저장한다(S1200 단계). 그러나, S1100 단계에서의 판별 결과 빈 캐시라인이 존재하지 않으면, 버퍼 메모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 빅팀(Victim) 캐시라인을 선정하고 플러시(flush)를 수행한다(S1300 단계). 플러시는 버퍼 메모리(200)에 저장된 데이터를 강제적으로 출력하는 것을 의미한다. 이어서, 버퍼 메 모리 제어부(130)는 버퍼 매니저(30)의 제어에 따라서 플러시된 캐시라인의 볼륨과 뱅크 정보를 알아낸다. 그리고, 플러시된 캐시라인의 데이터를 플래시 메모리에 저장하기 위한 플래시 기록 오퍼레이션을 잡유닛 단위로 스케쥴러(40)에 등록한다(S1400 단계). The buffer memory controller 130 determines whether an empty cache line exists in the buffer memory 200 under the control of the buffer manager 30 (operation S1100). If there is an empty cache line as a result of the determination in step S1100, the buffer memory controller 130 is allocated a cache line for storing the write data under the control of the buffer manager 30. Then, the buffer memory controller 130 temporarily stores the write data in the allocated cache line (step S1200). However, if the empty cache line does not exist as a result of the determination in step S1100, the buffer memory controller 130 selects a Victim cache line under the control of the buffer manager 30 and performs a flush (S1300). step). Flush means forcibly outputting data stored in the buffer memory 200. Subsequently, the buffer memory controller 130 finds the volume and bank information of the flushed cache line under the control of the buffer manager 30. The flash write operation for storing the flushed cache line data in the flash memory is registered in the scheduler 40 in units of job units (step S1400).

스케쥴러(40)는 등록된 잡유닛을 큐잉하고, 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 찼는지(full) 여부(즉, 베이스 플레이트가 형성되었는지 여부)를 판별한다(S1500 단계). S1500 단계의 판별 결과 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 차지 않았으면, 수순은 S1400 단계로 되돌아간다. 그리고, S1500 단계의 판별 결과 큐잉된 잡유닛에 의해 베이스 플레이트가 가득 찼으면, 베이스 플레이트에 대응되는 복수 개의 플래시 기록 오퍼레이션들을 FTL(50)로 이슈한다(S1600 단계). The scheduler 40 queues the registered job unit and determines whether the base plate is full (that is, whether the base plate is formed) by the queued job unit (step S1500). If the base plate is not full by the queued job unit as a result of the determination of step S1500, the procedure returns to step S1400. If the base plate is full by the queued job unit as a result of the determination in step S1500, a plurality of flash write operations corresponding to the base plate are issued to the FTL 50 (step S1600).

FTL(50)은 이슈된 복수 개의 플래시 기록 오퍼레이션들을 실행한다(S1700 단계). S1700 단계에서, FTL(50)은 이슈된 복수 개의 플래시 기록 오퍼레이션들에 응답해서 기록 데이터가 저장될 복수 개의 플래시 메모리의 물리 블록 어드레스(PBA)들을 찾아낸다. 그리고, 해당 물리 블록 어드레스(PBA)들에 기록 데이터를 저장한다. 이 때 수행되는 플래시 기록 오퍼레이션들은 복수 개의 채널들과 복수 개의 웨이들에 해당되는 복수 개의 플래시 메모리들에서 병렬로 또는 동시에 수행된다. The FTL 50 executes a plurality of flash write operations at issue (step S1700). In step S1700, the FTL 50 finds physical block addresses PBAs of a plurality of flash memories in which write data are to be stored in response to the plurality of flash write operations at issue. The write data is stored in the corresponding physical block addresses PBAs. Flash write operations performed at this time are performed in parallel or simultaneously in a plurality of flash memories corresponding to a plurality of channels and a plurality of ways.

이상에서는, 호스트(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 buffer memory 200 and the data storage unit 300 in response to a write command provided from the host 900 has been described. However, if the SSD 500 of the present invention can provide a function for queuing a plurality of commands to be executed, the above-described scheduling method of the present invention may be applied not only to a write command but also to a read command. A command queuing method that may be applied to the SSD 500 of the present invention may include Native Command Queuing (NCQ), Tagged Command Queuing (TCQ), and the like.

도 12는 본 발명에 따른 컴퓨팅 시스템(2000)의 구성을 보여주는 도면이다. 12 illustrates a configuration of a computing system 2000 according to the present invention.

도 12를 참조하면, 본 발명에 따른 컴퓨팅 시스템(2000)은 버스에 전기적으로 연결된 SSD 컨트롤러(100), 데이터 저장부(300), 모뎀(600), 사용자 인터페이스(800), 그리고 마이크로프로세서(900)를 포함한다. 모뎀(600)에는 베이스밴드 칩셋(baseband chipset) 또는 베이스밴드 SoC(baseband Soc)등이 포함될 수 있다. Referring to FIG. 12, the computing system 2000 according to the present invention includes an SSD controller 100, a data storage unit 300, a modem 600, a user interface 800, and a microprocessor 900 electrically connected to a bus. ). The modem 600 may include a baseband chipset or a baseband SoC.

도 12에 도시된 SSD 컨트롤러(100) 및 데이터 저장부(300)는 도 1 및 도 2에 도시된 데이터 저장 장치(SSD ; 500)를 구성할 수 있다. 도 12에 도시된 SSD(500)의 상세 구성은 도 1 및 도 2에서 설명한 것과 실질적으로 동일하다. 따라서, 동일한 구성에 대해서는 동일한 참조 번호를 부여하고 중복되는 설명은 이하 생략하기로 한다. The SSD controller 100 and the data storage unit 300 illustrated in FIG. 12 may configure the data storage device SSD 500 illustrated in FIGS. 1 and 2. The detailed configuration of the SSD 500 shown in FIG. 12 is substantially the same as that described with reference to FIGS. 1 and 2. Therefore, the same reference numerals are assigned to the same components, and overlapping descriptions will be omitted below.

데이터 저장부(300)는 SSD(500)의 메인 스토리지이다. 데이터 저장부(300)에는 마이크로프로세서(900)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 SSD 컨트롤러(100)를 통해 저장될 수 있다. 데이터 저장부(300)는 복수 개의 채널들과 복수 개의 웨이들을 지원하는 불휘발성 메모리로 구성되며, 바람직하게는 불휘발성 메모리 중에서도 플래시 메모리로 구성될 수 있다. The data storage unit 300 is main storage of the SSD 500. In the data storage unit 300, N-bit data (N is an integer greater than or equal to 1) to be processed / processed by the microprocessor 900 may be stored through the SSD controller 100. The data storage unit 300 may be configured as a nonvolatile memory supporting a plurality of channels and a plurality of ways, and may be preferably configured as a flash memory among the nonvolatile memories.

SSD(500)는 SSD 컨트롤러(100)와 데이터 저장부(300) 사이에 송수신되는 데이터와, SSD 컨트롤러(100)와 호스트(900) 사이에 송수신되는 데이터를 임시로 저장할 수 있는 버퍼 메모리를 구비할 수 있다. 버퍼 메모리는 SSD 컨트롤러(100) 외부에 구비될 수도 있고, SSD 컨트롤러(100) 내부에 구비될 수도 있다. 버퍼 메모리는 DRAM 또는 SRAM과 같이 랜덤 액세스가 가능한 메모리로 구성될 수 있다. The SSD 500 may include a buffer memory capable of temporarily storing data transmitted and received between the SSD controller 100 and the data storage unit 300 and data transmitted and received between the SSD controller 100 and the host 900. Can be. The buffer memory may be provided outside the SSD controller 100 or may be provided inside the SSD controller 100. The buffer memory may be configured as a randomly accessible memory such as DRAM or SRAM.

SSD 컨트롤러(100)는 데이터 저장부(300) 및 버퍼 메모리의 읽기/기록/소거 동작을 제어한다. SSD 컨트롤러(100) 내부에는 버퍼 매니저(30), 스케쥴러(40) 및 FTL(50)과 같은 제어 알고리즘이 소프트웨어 또는 펌웨어로 탑재될 수 있다. SSD 컨트롤러(100)는 데이터 저장부(300)가 SRAM/HDD 처럼 읽기/기록/소거 동작이 자유롭게 수행되는 저장 매체로서 사용할 수 있도록 FTL(50)을 통해 데이터 저장부(300)의 맵핑 정보를 관리한다. 데이터 저장부(300)의 맵핑 정보는 FTL(50)에 의해 관리된다. FTL(50)에 의해 수행된 맵핑 결과는 메타 데이터 형태로 저장될 수 있다. The SSD controller 100 controls the read / write / erase operations of the data storage unit 300 and the buffer memory. Inside the SSD controller 100, control algorithms such as the buffer manager 30, the scheduler 40, and the FTL 50 may be mounted in software or firmware. The SSD controller 100 manages mapping information of the data storage unit 300 through the FTL 50 so that the data storage unit 300 can be used as a storage medium in which read / write / erase operations are freely performed, such as SRAM / HDD. do. Mapping information of the data storage unit 300 is managed by the FTL 50. The mapping result performed by the FTL 50 may be stored in the form of metadata.

SSD 컨트롤러(100)는 버퍼 매니저(30)를 통해 플래시 메모리(310-330)의 채널 및 웨이 구조를 근거로 하여 버퍼 메모리에 저장되는 데이터를 볼륨(Volume)과 뱅크(Bank) 단위로 구분하여 분산 저장한다. 그리고, SSD 컨트롤러(100)는 스케쥴러(40)를 통해 버퍼 메모리에 분산 저장된 데이터가 데이터 저장부(300)의 복수의 채널들과 복수의 웨이들에 분산되어 이슈될 수 있도록 스케쥴링한다. 그 결과, 버퍼 메모리에 저장된 데이터가 복수 개의 채널들 및 복수 개의 웨이들에 대응되는 복수 개의 플래시 메모리들에서 병렬로 또는 동시에 기록될 수 있게 된다. 그 결 과, SSD(500)의 채널 이용도 및 데이터 저장 성능이 효과적으로 향상된다. The SSD controller 100 divides and stores data stored in the buffer memory into volume and bank units based on the channel and way structures of the flash memories 310 through 330 through the buffer manager 30. Save it. The SSD controller 100 schedules the distributed data stored in the buffer memory through the scheduler 40 to be distributed to the plurality of channels and the plurality of ways of the data storage unit 300 and to be issued. As a result, data stored in the buffer memory can be written in parallel or simultaneously in the plurality of flash memories corresponding to the plurality of channels and the plurality of ways. As a result, the channel utilization and data storage performance of the SSD 500 is effectively improved.

도 12에는 SSD 컨트롤러(100) 및 데이터 저장부(300)가 SSD를 구성하는 경우가 예시적으로 도시되어 있다. 그러나, SSD 컨트롤러(100) 및 데이터 저장부(300)는 SSD 뿐만 아니라, 메모리 카드 및/또는 메모리 카드 시스템을 구성할 수 있다.12 illustrates an example in which the SSD controller 100 and the data storage unit 300 constitute an SSD. However, the SSD controller 100 and the data storage unit 300 may configure not only an SSD but also a memory card and / or a memory card system.

본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(700)가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. When the computing system according to the present invention is a mobile device, a battery 700 for supplying an operating voltage of the computing system may be additionally provided. Although not shown in the drawings, the computing system according to the present invention may further be provided with an application chipset, a camera image processor (CIS), a mobile DRAM, or the like.

이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.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)

복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들; A plurality of main memories connected to the plurality of channels and the plurality of ways; 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고A buffer memory for temporarily storing a plurality of data to be recorded in the main memories; And 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하는 데이터 저장 장치.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. 제 1 항에 있어서,The method of claim 1, 상기 컨트롤러는 상기 메인 메모리들에 대한 기록 동작시, 상기 임시 저장된 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들로 분산시키는 데이터 저장 장치.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 to the main memories. 제 1 항에 있어서,The method of claim 1, 상기 컨트롤러는 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 버퍼 메모리의 논리 어드레스 및 물리 어드레스를 맵핑하는 데이터 저장 장치.The controller maps a logical address and a physical address of the buffer memory to correspond to channel and way information of the main memories. 제 1 항에 있어서,The method of claim 1, 상기 버퍼 메모리는 복수 개의 뱅크들과 복수의 볼륨들의 교차 영역에 배치된 복수의 섹터들을 포함하는 데이터 저장 장치.The buffer memory includes a plurality of sectors disposed in an intersection area of a plurality of banks and a plurality of volumes. 제 4 항에 있어서,The method of claim 4, wherein 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되는 데이터 저장 장치.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. 제 4 항에 있어서,The method of claim 4, wherein 상기 컨트롤러는 데이터가 기록될 각각의 메인 메모리의 논리 어드레스에 응답해서 상기 논리 어드레스에 대응되는 볼륨 및 뱅크를 결정하고, 상기 결정된 볼륨 및 뱅크에 대응되는 섹터에 상기 데이터를 저장하는 데이터 저장 장치.And 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 the bank. 제 4 항에 있어서,The method of claim 4, wherein 상기 섹터들 각각의 논리 어드레스는, 상기 볼륨들 중 하나와 상기 뱅크들 중 하나에 대응되는 캐시라인으로 표시되는 데이터 저장 장치.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. 제 7 항에 있어서,The method of claim 7, wherein 상기 컨트롤러는 상기 캐시라인과, 상기 캐시라인에 대응되는 볼륨 및 뱅크의 맵핑 정보를 저장하는 데이터 저장 장치.The controller is configured to store mapping information of the cache line and a volume and a bank corresponding to the cache line. 제 7 항에 있어서,The method of claim 7, wherein 상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 버퍼 메모리의 논리 어드레스들은 복수의 캐시웨이들을 구성하며, 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. 상기 캐시웨이들 각각은 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 캐시라인들을 포함하는 데이터 저장 장치.Each of the cacheways includes N × M cachelines corresponding to N volumes and M banks. 제 9 항에 있어서,The method of claim 9, 상기 컨트롤러는 적어도 하나의 캐시웨이에 대응되는 복수의 데이터가 상기 메인 메모리들에서 저장되도록 제어하는 데이터 저장 장치.And the controller controls a plurality of data corresponding to at least one cache way to be stored in the main memories. 제 7 항에 있어서,The method of claim 7, wherein 상기 컨트롤러는 상기 캐시라인에 대응되는 섹터에 저장된 데이터를 대응되는 메인 메모리에 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 데이터 저장 장치. And the controller registers 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. 제 11 항에 있어서,The method of claim 11, 상기 컨트롤러는 상기 등록된 기록 오퍼레이션을 큐잉하여 잡유닛 플레이트를 구성하는 데이터 저장 장치.And the controller configures a job unit plate by queuing the registered write operation. 제 12 항에 있어서,13. The method of claim 12, 상기 복수의 메인 메모리들에 N개의 채널들과 M개의 웨이들이 접속된 경우 상기 잡유닛 플레이트에는 N개의 볼륨들과 M개의 뱅크들에 대응되는 N×M개의 잡유닛들이 포함되는 데이터 저장 장치.When the N channels and the 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. 제 12 항에 있어서,13. The method of claim 12, 상기 컨트롤러는 적어도 하나의 잡유닛 플레이트 단위로 상기 메인 메모리들에 대한 기록 오퍼레이션들을 실행하는 데이터 저장 장치.And the controller executes write operations for the main memories in units of at least one job unit plate. 제 14 항에 있어서,The method of claim 14, 상기 실행된 기록 오퍼레이션들 각각은 상기 메인 메모리들에 접속된 각각의 채널과 각각의 웨이에 대응되는 데이터 저장 장치.Each of the executed write operations corresponds to a respective channel and a respective way connected to the main memories. 제 12 항에 있어서,13. The method of claim 12, 상기 잡유닛들 각각은 대응되는 볼륨 및 뱅크에 따라 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 데이터 저장 장치.Each of the job units is queued at a unique location on the job unit plate according to a corresponding volume and bank. 제 16 항에 있어서,The method of claim 16, 상기 컨트롤러는 상기 큐잉 동작시 동일한 볼륨 및 동일한 뱅크에 대응되는 복수의 잡유닛들을 상기 잡유닛 플레이트 상의 동일한 위치에 적층시키는 데이터 저장 장치.And the controller stacks a plurality of job units corresponding to the same volume and the same bank in the same position on the job unit plate during the queuing operation. 제 1 항에 있어서,The method of claim 1, 상기 컨트롤러는, 상기 메인 메모리들의 채널 및 웨이 정보를 근거로 하여 상기 메인 메모리들과 상기 버퍼 메모리의 기록 내지 읽기동작을 제어하는 버퍼 메모리 제어부를 포함하는 데이터 저장 장치.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. 제 18 항에 있어서,The method of claim 18, 상기 버퍼 메모리 제어부는, The buffer memory control unit, 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 상기 복수의 데이터가 상기 버퍼 메모리에 저장되는 위치를 관리하는 버퍼 매니저; 그리고A buffer manager managing a location where the plurality of data are stored in the buffer memory so as to correspond to the plurality of channels and the plurality of ways; And 상기 버퍼 메모리에 저장된 상기 복수의 데이터가 상기 메인 메모리들에 저장되는 타이밍을 스케쥴링하는 스케쥴러를 포함하는 데이터 저장 장치.And a scheduler for scheduling timing at which the plurality of data stored in the buffer memory is stored in the main memories. 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법에 있어서: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: 상기 메인 메모리들에 저장될 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 버퍼 메모리에 저장하는 단계; Storing a plurality of data to be stored in the main memories in a buffer memory so as 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 상기 스케쥴링 결과에 응답해서 상기 버퍼 메모리에 저장된 상기 복수의 데 이터를 상기 복수의 메인 메모리들로 기록하는 단계를 포함하는 데이터 저장 방법.And writing the plurality of data stored in the buffer memory to the plurality of main memories in response to the scheduling result. 제 20 항에 있어서,The method of claim 20, 상기 복수의 데이터를 상기 버퍼 메모리에 분산하는 단계는, Distributing the plurality of data in the buffer memory, 상기 메인 메모리들의 논리 어드레스들에 응답해서 상기 논리 어드레스들에 대응되는 상기 버퍼 메모리의 볼륨들 및 뱅크들을 결정하는 단계; 그리고Determining volumes and banks of the buffer memory corresponding to the logical addresses in response to the logical addresses of the main memories; And 상기 결정된 볼륨들 및 뱅크들에 대응되는 복수의 섹터들에게 상기 복수의 데이터를 저장하는 단계를 포함하는 데이터 저장 방법.And storing the plurality of data in a plurality of sectors corresponding to the determined volumes and banks. 제 21 항에 있어서,The method of claim 21, 상기 볼륨들 각각은 상기 메인 메모리들에 접속된 각각의 채널에 대응되고, 상기 뱅크들 각각은 상기 메인 메모리들에 접속된 각각의 웨이에 대응되는 데이터 저장 방법.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. 제 21 항에 있어서,The method of claim 21, 상기 섹터들의 논리 어드레스들과, 상기 섹터들의 볼륨 및 뱅크 정보들을 저장하는 단계를 더 포함하는 데이터 저장 방법.Storing logical addresses of the sectors, volume and bank information of the sectors. 제 21 항에 있어서,The method of claim 21, 상기 복수의 데이터를 상기 복수의 메모리들에 저장하는 단계는,The storing of the plurality of data in the plurality of memories may include: 상기 버퍼 메모리에 저장된 각각의 데이터를 대응되는 메인 메모리로 기록하기 위한 기록 오퍼레이션을 잡유닛 단위로 등록하는 단계;Registering a recording operation in units of job units 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 상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 병렬로 실행하는 단계를 포함하는 데이터 저장 방법.And if the job unit plate is configured, executing a plurality of write operations corresponding to the configured job unit plate in parallel. 제 24 항에 있어서,The method of claim 24, 상기 잡유닛 플레이트는 상기 복수의 채널들과 상기 복수의 웨이들에 대응되는 복수의 잡유닛들을 포함하는 데이터 저장 방법.The job unit plate includes a plurality of job units corresponding to the plurality of channels and the plurality of ways. 제 24 항에 있어서,The method of claim 24, 상기 복수의 기록 오퍼레이션들은 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되는 데이터 저장 방법.And the plurality of write operations correspond to the plurality of channels and the plurality of ways. 제 24 항에 있어서,The method of claim 24, 상기 각각의 잡유닛은 대응되는 볼륨 및 뱅크에 따라서 상기 잡유닛 플레이트 상의 고유의 위치에 큐잉되는 데이터 저장 방법.And each job unit is queued at a unique location on the job unit plate according to a corresponding volume and bank. 제 24 항에 있어서,The method of claim 24, 상기 잡유닛을 큐잉하는 단계는, Queuing the job unit, 동일한 볼륨 정보 및 동일한 뱅크 정보를 갖는 잡유닛들을 상기 잡유닛 플레이트 상에서 동일한 위치에 적층하는 단계를 포함하는 데이터 저장 방법.Stacking job units having the same volume information and the same bank information at the same location on the job unit plate. 호스트로부터 입력된 기록 커멘드에 응답해서 버퍼 메모리의 캐시라인을 요청하는 단계;Requesting a cache line of the buffer memory in response to a write command input from the 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 상기 잡유닛 플레이트가 구성되면, 상기 구성된 잡유닛 플레이트에 대응되는 복수의 기록 오퍼레이션들을 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들에서 실행하는 단계를 포함하는 데이터 저장 장치의 데이터 저장 방법. If 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; Storage method. 호스트; 그리고Host; And 상기 호스트로부터 입력된 기록 커멘드에 응답해서 데이터를 기록하는 데이 터 저장 장치를 포함하고,A data storage device for recording data in response to a write command input from the host; 상기 데이터 저장 장치는, The data storage device, 복수의 채널들 및 복수의 웨이들에 접속된 복수의 메인 메모리들; A plurality of main memories connected to the plurality of channels and the plurality of ways; 상기 메인 메모리들에 기록될 복수의 데이터를 임시 저장하는 버퍼 메모리; 그리고A buffer memory for temporarily storing a plurality of data to be recorded in the main memories; And 상기 메인 메모리들의 채널 및 웨이 정보에 대응되도록 상기 복수의 데이터를 상기 버퍼 메모리에 저장하는 컨트롤러를 포함하는 컴퓨팅 시스템.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. 복수의 채널들 및 복수의 웨이들에 전기적으로 접속된 복수의 메인 메모리들을 구비한 데이터 저장 장치의 데이터 저장 방법을 컴퓨터에서 실행시키기 위한 프로그램으로 기록하고 컴퓨터로 읽을 수 있는 저장 매체에 있어서:A computer readable storage medium having recorded thereon a program for executing on a computer 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. 상기 메인 메모리들에 저장될 복수의 데이터를 상기 복수의 채널들 및 상기 복수의 웨이들에 대응되도록 버퍼 메모리에 저장하는 단계; Storing a plurality of data to be stored in the main memories in a buffer memory so as 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 상기 스케쥴링 결과에 응답해서 상기 버퍼 메모리에 저장된 상기 복수의 데이터를 상기 복수의 메인 메모리들로 기록하는 단계를 포함하는 저장 매체.And recording the plurality of data stored in the buffer memory into the plurality of main memories in response to the scheduling result.
KR1020090046575A 2009-05-06 2009-05-27 Data storage device and data storing method thereof KR101517183B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050026789A (en) * 2003-09-09 2005-03-16 삼성전자주식회사 Cache memory device with flexible sizes

Cited By (4)

* Cited by examiner, † Cited by third party
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