KR102395195B1 - 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 - Google Patents

데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR102395195B1
KR102395195B1 KR1020160008160A KR20160008160A KR102395195B1 KR 102395195 B1 KR102395195 B1 KR 102395195B1 KR 1020160008160 A KR1020160008160 A KR 1020160008160A KR 20160008160 A KR20160008160 A KR 20160008160A KR 102395195 B1 KR102395195 B1 KR 102395195B1
Authority
KR
South Korea
Prior art keywords
controller
firmware
memory device
full
volatile memory
Prior art date
Application number
KR1020160008160A
Other languages
English (en)
Other versions
KR20170082954A (ko
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 US15/277,496 priority Critical patent/US10114550B2/en
Priority to CN201611204422.6A priority patent/CN106951180B/zh
Publication of KR20170082954A publication Critical patent/KR20170082954A/ko
Application granted granted Critical
Publication of KR102395195B1 publication Critical patent/KR102395195B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 장치가 게시된다. 상기 데이터 저장 장치는 제1휘발성 메모리 장치와, 제1스케일-아웃 저장 장치와, 상기 제1휘발성 메모리 장치와 상기 제1스케일-아웃 저장 장치를 제어하고 제1펌웨어를 실행하는 제1컨트롤러를 포함한다. 상기 제1스케일-아웃 저장 장치는 제2휘발성 메모리 장치와, 제1불휘발성 메모리 장치와, 상기 제2휘발성 메모리 장치와 상기 제1불휘발성 메모리 장치를 제어하고 제2펌웨어를 실행하는 제2컨트롤러를 포함하고, 상기 제1컨트롤러는 상기 제2펌웨어의 부팅이 상기 제2컨트롤러에 의해 완료된 후 상기 제1펌웨어의 부팅을 실행한다.

Description

데이터 저장 장치와 이를 포함하는 데이터 처리 시스템{DATA STORAGE DEVICE AND DATA PROCESSING SYSTEM HAVING SAME}
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 서로 다른 펌웨어들을 사용하는 컨트롤러들 사이에서 상기 펌웨어들의 부팅 시퀀스와 다운로드 시퀀스를 수행할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되고, 상기 메모리 장치는 휘발성 메모리 장치와 불휘발성 메모리 장치로 구분된다. 플래시 메모리 장치는 복수의 메모리 셀들이 한 번의 프로그램 작동으로 소거(erase) 또는 프로그램(program)되는 EEPROM의 일 예이다.
불휘발성 메모리 장치들(예컨대, 플래시 메모리 장치들)을 포함하는 종래의 드라이브의 경우, 상기 드라이브의 용량을 증가시키기 위해서는 상기 불휘발성 메모리 장치들의 개수가 증가해야 한다.
상기 드라이브에 포함된 상기 불휘발성 메모리 장치들의 개수가 증가하면, 논리 어드레스들(logical addresses)을 물리 어드레스들(physical addresses)로 변환하는 정보를 포함하는 매핑 테이블의 용량(또는 크기)도 증가해야 한다. 그러나, 매핑 테이블을 저장하는 메모리의 용량과 상기 메모리의 처리 속도를 고려하면, 불휘발성 메모리 장치들의 개수는 무한정 증가할 수 없다.
데이터 저장 장치, 예컨대, 데이터 서버의 데이터 처리 능력을 증가하는 방법으로 스케일 업(scale up)과 스케일 아웃(scale out)이 있다. 상기 스케일 업은 상기 데이터 서버 그 자체의 용량을 증가시켜 상기 데이터 서버의 데이터 처리 능력을 향상시키는 것으로서 수직 스케일링으로 불리기도 한다. 상기 스케일 아웃은 접속된 데이터 서버의 개수를 늘려 상기 데이터 서버를 포함하는 시스템의 데이터 처리 능력을 향상시키는 것으로서 수평 스케일링으로 불리기도 한다.
스케일 업(scale up) 구조는 갖는 데이터 저장 장치에서, 상기 데이터 저장 장치에 포함된 불휘발성 메모리 장치들의 개수가 증가하면, 상기 불휘발성 메모리 장치들을 제어하는 컨트롤러와 상기 불휘발성 메모리 장치들 사이에 구현된 인터페이스의 로딩 커패시턴스(loading capacitance)가 증가한다. 이에 따라, 상기 데이터 저장 장치의 데이터 처리 속도가 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 서로 다른 펌웨어들을 사용하는 컨트롤러들 사이에서 상기 펌웨어들의 부팅 시퀀스와 다운로드 시퀀스를 수행할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 제1휘발성 메모리 장치와, 제1스케일-아웃 저장 장치와, 상기 제1휘발성 메모리 장치와 상기 제1스케일-아웃 저장 장치를 제어하고 제1펌웨어를 실행하는 제1컨트롤러를 포함한다. 상기 제1스케일-아웃 저장 장치는 제2휘발성 메모리 장치와, 제1불휘발성 메모리 장치와, 상기 제2휘발성 메모리 장치와 상기 제1불휘발성 메모리 장치를 제어하고 제2펌웨어를 실행하는 제2컨트롤러를 포함하고, 상기 제1컨트롤러는 상기 제2펌웨어의 부팅이 상기 제2컨트롤러에 의해 완료된 후 상기 제1펌웨어의 부팅을 실행한다.
상기 데이터 저장 장치는 제2시점에서 상기 제1스케일-아웃 저장 장치로 제2동작 전압을 공급하고, 제1시점에서 상기 제1컨트롤러로 제1동작 전압을 공급하는 전력 관리 IC를 더 포함하고, 상기 제2시점은 상기 제1시점보다 빠르다.
상기 제1불휘발성 메모리 장치는 제2부트 로드와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 저장하는 제1블록과, 상기 제1펌웨어, 상기 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 저장하는 제2블록을 포함한다.
상기 제1불휘발성 메모리 장치는 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 2차원 메모리 셀 또는 3차원 메모리 셀이다.
상기 제2컨트롤러는 상기 제1컨트롤러로부터 출력된 제1물리 리드 명령에 응답하여 상기 제2부트 로드를 상기 제1블록으로부터 상기 제2컨트롤러로 로드하고, 상기 제2부트 로드를 이용하여 상기 제2블록에 저장된 상기 제1 풀-펌웨어를 상기 제1컨트롤러를 전송하고, 상기 제2부트 로드를 이용하여 상기 제1블록에 저장된 상기 제2펌웨어를 상기 제2컨트롤러로 로드하고, 상기 제1 풀-펌웨어의 전송에 관련된 명령들은 상기 제1물리 리드 명령을 포함하는 제2물리 리드 명령들이다.
상기 제2컨트롤러는 상기 제2휘발성 메모리 장치를 경유하기 않고 상기 제2부트 로더를 상기 제1블록으로부터 상기 제2컨트롤러로 로드하고, 상기 제2부트 로더를 이용하여 상기 제2휘발성 메모리 장치를 초기화하고, 상기 제2휘발성 메모리 장치를 경유하여 상기 제1 풀-펌웨어를 상기 제1컨트롤러를 전송하고, 상기 제2휘발성 메모리 장치를 경유하여 상기 제2펌웨어를 상기 제2컨트롤러로 로드한다.
상기 제1컨트롤러는 상기 제2컨트롤러로부터 전송된 상기 제1 풀-펌웨어를 상기 제1휘발성 메모리 장치에 저장하고, 상기 제1컨트롤러의 동작 모드를 물리 어드레스를 기반으로 동작하는 물리 모드로부터 논리 어드레스를 기반으로 동작하는 논리 모드로 변경하고, 상기 제2펌웨어의 실행을 지시하는 실행 명령을 상기 제2컨트롤러로 전송한다.
상기 제2컨트롤러는 상기 실행 명령에 응답하여 상기 제2펌웨어를 실행하고 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고, 상기 제1컨트롤러는, 상기 지시 신호에 응답하여, 상기 제1휘발성 메모리 장치에 저장된 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행한다.
상기 제1펌웨어를 실행하는 상기 제1컨트롤러는 버전 확인 명령을 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 버전 확인 명령에 응답하여 상기 제2펌웨어의 버전에 대한 버전 정보를 상기 제1컨트롤러로 전송한다.
실시 예들에 따라, 상기 제1컨트롤러는 상기 제1컨트롤러에 연결된 외부 장치로부터 상기 제1펌웨어, 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 수신하여 상기 제1휘발성 메모리 장치에 저장하고, 상기 제1컨트롤러의 동작 모드를 물리 어드레스를 기반으로 동작하는 물리 모드로부터 논리 어드레스를 기반으로 동작하는 논리 모드로 변경하고, 제1논리 명령을 이용하여 상기 제2부트 로더를 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 제2부트 로더를 이용하여 상기 제2휘발성 메모리 장치를 초기화한다.
상기 제1컨트롤러는, 제2논리 명령을 이용하여, 상기 제2부트 로더와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 제2 풀-펌웨어를 상기 제2휘발성 메모리 장치를 경유하여 상기 제1불휘발성 메모리 장치의 제1블록에 라이트한다. 상기 제1컨트롤러는, 제3논리 명령을 이용하여, 상기 제1 풀-펌웨어를 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 제1 풀-펌웨어를 상기 제2휘발성 메모리 장치를 경유하여 상기 제1불휘발성 메모리 장치의 제2블록에 라이트한다.
상기 제1컨트롤러는 상기 제2펌웨어의 실행을 지시하는 실행 명령을 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는, 상기 실행 명령에 응답하여, 상기 제2휘발성 메모리 장치에 저장된 상기 제2 풀-펌웨어에 포함된 상기 제2펌웨어를 상기 제2컨트롤러로 로드하여 실행하고, 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고, 상기 제1컨트롤러는, 상기 지시 신호에 응답하여, 상기 제1휘발성 메모리 장치에 저장된 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행한다.
상기 외부 장치는 호스트와 제2스케일-아웃 저장 장치 중에서 어느 하나이고, 상기 제2스케일-아웃 저장 장치는 제3휘발성 메모리 장치와, 상기 제1 풀-펌웨어를 저장하는 제2불휘발성 메모리 장치와, 상기 제3휘발성 메모리 장치와 상기 제2불휘발성 메모리 장치를 제어하는 제3컨트롤러를 포함한다.
상기 제1컨트롤러는 제1GPIO 핀들을 포함하고, 상기 제2컨트롤러는 제2GPIO 핀들을 포함하고, 상기 제1GPIO 핀들 각각과 상기 제2GPIO 핀들 각각은 서로 연결되고, 상기 제1컨트롤러와 상기 제2컨트롤러 각각은 상기 제1GPIO 핀들 중에서 어느 하나의 핀의 상태를 체크하여 상기 데이터 저장 장치의 동작 모드가 부트 모드인지 다운로드 모드인지를 판단한다.
상기 제1불휘발성 메모리 장치는 제2부트 로드와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 저장하는 제1블록과, 상기 제1펌웨어, 상기 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 저장하는 제2블록을 포함하고, 상기 동작 모드가 상기 부트 모드일 때, 상기 제2컨트롤러는 상기 제2블록에 저장된 상기 제1 풀-펌웨어를 상기 제1컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 제1블록에 저장된 상기 제2펌웨어를 상기 제2컨트롤러로 로드하고, 상기 제2컨트롤러는 상기 제1컨트롤러로부터 전송된 상기 제2펌웨어의 실행을 지시하는 실행 명령에 응답하여 상기 제2펌웨어를 실행하고 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고, 상기 제1컨트롤러는 상기 지시 신호에 응답하여 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행한다.
상기 제1불휘발성 메모리 장치는 제1블록과 제2블록을 포함하고, 상기 동작 모드가 상기 다운로드 모드일 때, 상기 제1컨트롤러는 상기 제1컨트롤러에 연결된 외부 장치로부터 상기 제1펌웨어, 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 수신하여 상기 제1휘발성 메모리 장치에 저장한다.
상기 제1컨트롤러는 상기 제2부트 로더와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 제2 풀-펌웨어를 상기 제1블록에 라이트하고, 상기 제1컨트롤러는 상기 제1 풀-펌웨어를 상기 제2컨트롤러로 전송하고, 상기 제2컨트롤러는 상기 제1 풀-펌웨어를 상기 제2블록에 라이트하고, 상기 제2컨트롤러는 상기 제1컨트롤러로부터 출력된 상기 제2펌웨어의 실행을 지시하는 실행 명령에 응답하여 상기 제2펌웨어를 실행하고, 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고, 상기 제1컨트롤러는 상기 지시 신호에 응답하여 상기 제1휘발성 메모리 장치에 저장된 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 제1휘발성 메모리 장치와, 스케일-아웃 저장 장치들과, 상기 제1휘발성 메모리 장치와 상기 스케일-아웃 저장 장치들을 제어하는 제1컨트롤러를 포함한다. 상기 스케일-아웃 저장 장치들 각각은 제2휘발성 메모리 장치와, 불휘발성 메모리 장치와, 상기 제2휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하는 제2컨트롤러를 포함한다. 상기 제1컨트롤러는 제1펌웨어를 실행하고, 상기 스케일-아웃 저장 장치들 각각에 포함된 제2컨트롤러들 각각은 제2펌웨어들 각각을 실행하고, 상기 제1컨트롤러는 상기 제2컨트롤러들 각각에 의해 상기 제2펌웨어들 각각이 실행된 후 상기 제1펌웨어를 실행한다.
상기 제1컨트롤러는, 상기 제2컨트롤러들 각각에 의해 상기 제2펌웨어들 각각이 실행됨을 지시하는 지시 신호들 중에서 마지막 지시 신호에 응답하여, 상기 제1펌웨어를 실행하고, 상기 지시 신호들 각각은 상기 제2컨트롤러들 각각에 의해 상기 제1컨트롤러로 전송된다. 상기 제1컨트롤러는 상기 제2컨트롤러들 각각으로 버전 확인 명령을 전송하고, 상기 제2컨트롤러들 각각은 상기 버전 확인 명령에 응답하여 상기 제2펌웨어들 각각의 버전에 대한 버전 정보를 상기 제1컨트롤러로 전송한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 호스트와, 상기 호스트에 연결된 데이터 저장 장치를 포함한다. 상기 데이터 저장 장치는 제1휘발성 메모리 장치와, 스케일-아웃 저장 장치와, 상기 제1휘발성 메모리 장치와 상기 스케일-아웃 저장 장치를 제어하고 제1펌웨어를 실행하는 제1컨트롤러를 포함한다.
상기 스케일-아웃 저장 장치는 제2휘발성 메모리 장치와, 불휘발성 메모리 장치와, 상기 제2휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하고 제2펌웨어를 실행하는 제2컨트롤러를 포함하고, 상기 제1컨트롤러는 상기 제2펌웨어의 부팅이 상기 제2컨트롤러에 의해 완료된 후 상기 제1펌웨어의 부팅을 실행한다.
본 발명의 실시 예에 따라, 서로 다른 펌웨어들을 사용하는 컨트롤러들을 포함하는 데이터 처리 시스템은 상기 펌웨어들의 부팅 시퀀스와 다운로드 시퀀스를 조절할 수 있는 효과가 있다.
본 발명의 실시 예에 따라, 서로 다른 펌웨어들을 사용하는 컨트롤러들을 포함하는 데이터 처리 시스템은 상기 펌웨어들의 동기시킬 수 있는 효과가 있다.
본 발명의 실시 예에 따라, 서로 다른 펌웨어들을 사용하는 컨트롤러들을 포함하는 데이터 처리 시스템은 상기 펌웨어들 각각의 버전을 일치시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도이다.
도 3은 도 2에 도시된 제1클러스터의 실시 예를 나타내는 블록도이다.
도 4는 도 3에 도시된 제1스케일-아웃 장치의 개략도이다.
도 5는 도 4에 도시된 제1스케일-아웃 컨트롤러의 블록도이다.
도 6은 도 1에 도시된 데이터 저장 장치의 파워 시퀀스를 나타낸다.
도 7은 도 1에 도시된 데이터 저장 장치의 GPIO의 연결 관계를 나타낸다.
도 8은 도 1에 도시된 제1ROM에 저장된 제1롬 코드의 실시 예를 나타낸다.
도 9는 도 5에 도시된 제2ROM에 저장된 제2롬 코드의 실시 예를 나타낸다.
도 10은 도 1의 메모리 클러스터의 제1블록과 제2블록에 저장된 데이터를 나타낸다.
도 11은 제1메인 펌웨어의 쉐도잉을 개념적으로 나타낸다.
도 12와 도 13은 도 1에 도시된 데이터 처리 시스템의 부트 시퀀스를 설명하는 개념도이다.
도 14와 도 15는 도 1에 도시된 데이터 처리 시스템의 펌웨어 다운로드 시퀀스를 설명하는 개념도이다.
도 16a부터 도 16c는 복수의 스케일-아웃 저장 장치들 사이의 펌웨어 불일치를 제거하는 방법을 설명하는 개념도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와, 인터페이스(110)를 통해 호스트(200)와 신호들을 주고받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다.
데이터 저장 장치(300)에 포함된 제1클러스터(410)의 구조가 도 3에 도시된 구조(410)를 가질 때, 데이터 저장 장치(300)는 스케일-아웃(scale-out) 구조를 가질 수 있다. 예컨대, 데이터 처리 시스템(100)은 메모리 시스템을 의미할 수 있다.
실시 예들에 따라, 메모리 클러스터(400)를 포함하는 데이터 처리 시스템 (100)은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), DAS(direct attached storage), SAN (storage area network), NAS(network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 메모리 클러스터(400)를 포함하는 데이터 처리 시스템(100)은 스마트 카 또는 자동차 시스템(automotive system)일 수 있다.
실시 예들에 따라, 메모리 클러스터(400)를 포함하는 모바일 컴퓨팅 장치는 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything (IoE)) 장치 또는 드론으로 구현될 수 있다.
인터페이스(110)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface) 인터페이스, 또는 멀티미디어 카드(multimedia card(MMC))인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는 인터페이스(110)를 통해 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있다. 호스트(200)는 호스트 컨트롤러를 의미할 수 있다. 호스트(200)는 데이터 저장 장치(300)의 펌웨어를 데이터 저장 장치(300)로 전송할 수 있다.
CPU(220)와 제1인터페이스(230)는 전송 매체(예컨대, 전송 라인들 또는 버스; 210)를 통해 신호들을 서로 주고받을 수 있다. 비록, 도 1에는 전송 매체 (210), CPU(220), 및 제1인터페이스(230)를 포함하는 호스트(200)가 도시되어 있으나 이에 한정되는 것은 아니다.
실시 예들에 따라, 호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)), 모바일(mobile) AP, 웹 서버(web server), 데이터 서버, 데이터베이스 서버, 또는 엔진 제어 유닛(engine control unit(ECU))로 구현될 수 있으나 이에 한정되는 것은 아니다.
예컨대, 전송 매체(210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus), ACE(AXI Coherency Extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 데이터 저장 장치(300)의 라이트 동작(write operation)을 제어할 수 있는 라이트 요청, 또는 데이터 저장 장치(300)의 리드 동작(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 예컨대, CPU(220)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 실시 예들에 따라 요청(request)은 명령(command)을 의미할 수 있다. 데이터 저장 장치(300)에 대한 펌웨어 업데이트가 필요할 때, CPU(220)는 펌웨어를 데이터 저장 장치 (300)로 전송할 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300)로 전송될 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 인터페이스(110)를 통해 데이터 저장 장치 (300)로 전송할 수 있다. 또한, 제1인터페이스(230)는 데이터 저장 장치(300)로부터 전송된 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 전송 매체 (210)를 통해 CPU(220)로 전송할 수 있다. 실시 예들에 따라, 제1인터페이스(230)는 신호들을 송수신할 수 있는 송수신기를 포함할 수 있다. 제1인터페이스(230)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게(compatible) 구현될 수 있다.
데이터 저장 장치(300)는 메인 컨트롤러(310), DRAM 장치(360), 전력 관리 IC(370), 및 메모리 클러스터(400)를 포함할 수 있다. 여기서, 메모리 클러스터 (400)의 스케일-아웃 저장 장치들 또는 메모리 장치들의 집합을 의미할 수 있다. 또한, 메모리 클러스터(400)는 스케일-아웃 장치들과 메모리 장치들을 포함할 수 있다.
데이터 저장 장치(300)는 플래시 메모리-기반 메모리 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300)는 솔리드 스테이트 드라이브(solid-state drive or solid-state disk(SSD)), 임베디드 SSD(embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)) 또는 매니지드 (managed) NAND로 구현될 수 있으나 이에 한정되는 것은 아니다. 플래시 메모리-기반 메모리 장치는 NAND-타입 플래시 메모리 장치 또는 NOR-타입 플래시 메모리 장치로 구현될 수 있다.
실시 예들에 따라, 데이터 저장 장치(300)는 하드 디스크 드라이브(hard disk drive(HDD)), PRAM(phase change RAM) 장치, MRAM(magnetoresistive RAM) 장치, STT-MRAM(spin-transfer torque MRAM) 장치, FRAM(ferroelectric RAM) 장치 또는 RRAM(resistive RAM) 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
메인 컨트롤러(310)는 호스트(200), DRAM 장치(360), 및 메모리 클러스터 (400) 사이에서 주고받는 신호들의 전송(또는 처리)을 제어할 수 있다. 실시 예들에 따라, 메인 컨트롤러(310)는 IC 또는 SoC로 구현될 수 있고 제1컨트롤러 또는 SSD 컨트롤러로 불릴 수 있다.
메인 컨트롤러(310)는 전송 매체(311), 제1ROM(315), 제2인터페이스(320), CPU(330), 제1내부 메모리 장치(331), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 포함할 수 있다.
전송 매체(예컨대, 전송 라인들 또는 버스; 311)는 AMBA, AHB, APB, AXI, ASB, ACE 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제1ROM(315)은 메인 컨트롤러(310)의 작동에 필요한 데이터를 저장할 수 있다. 제1ROM(315)은 제1ROM 코드를 저장할 수 있다. 제1ROM(315)은 마스크 ROM, 또는 시리얼 NOR 플래시 메모리 장치로 구현될 수 있다.
제1내부 메모리 장치(331)는 CPU(330)에 의해 실행될 수 있는 제1ROM 코드 또는 제1FTL(flash translation layer) 코드를 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부트(boot)될 때, 제1ROM 코드는 제1ROM(315)으로부터 제1내부 메모리 장치(331)로 로드(load)될 수 있고, 제1FTL 코드는 메모리 클러스터(400)로부터 제1내부 메모리 장치(331)로 로드될 수 있다.
실시 예들에 따라, 제1내부 메모리 장치(331)는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory(TCM))로 구현될 수 있으나 이에 한정되는 것은 아니다. 제1내부 메모리 장치(331)는 제1TCM이고, 상기 제1TCM은 SRAM으로 구현된다고 가정한다.
제2인터페이스(320)는 호스트(200)로 전송될 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다. 또한, 제2인터페이스(320)는 호스트(200)로부터 전송된 신호들을 수신하고, 수신된 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 CPU(330) 및/또는 버퍼 컨트롤러(340)로 전송할 수 있다. 실시 예에 따라, 제2인터페이스(320)는 신호들을 송수신할 수 있는 송수신기를 포함할 수 있다. 제2인터페이스(320)는 호스트 인터페이스로 사용될 수 있다.
제2인터페이스(320)의 구조와 동작은 인터페이스(110)의 구조와 동작에 적합하게 구현될 수 있다. 예컨대, 제2인터페이스(320)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(330)는, 전송 매체(311)를 통해, 제1ROM(315), 제1TCM(331), 제2인터페이스(320), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 제어할 수 있다. CPU (330)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 실시 예에 따라, CPU (330)는 PMIC(370)를 제어할 수 있다.
예컨대, CPU(330)가 제1CPU와 제2CPU를 포함하는 집합적 개념일 때, 상기 제1CPU는 제2인터페이스(320)를 통해 호스트(200)와 신호들을 주거나 받을 수 있고, 상기 제2CPU는 제3인터페이스(350)를 통해 메모리 클러스터(400)와 신호들을 주거나 받을 수 있다. 실시 예들에 따라, 상기 제1CPU와 상기 제2CPU 각각은 멀티-CPU를 구성할 수 있다. 실시 예들에 따라, 상기 제1CPU는 상기 제2CPU를 제어할 수 있으나 이에 한정되는 것은 아니다.
버퍼 컨트롤러(340)는, CPU(330)의 제어 또는 CPU(330)에서 실행되는 펌웨어(예컨대, 제1펌웨어)의 제어에 따라, DRAM 장치(360)에 데이터를 라이트하거나 DRAM 장치(360)로부터 데이터를 리드할 수 있다. 버퍼 컨트롤러(340)는 DRAM 장치 (360)에 대한 라이트 작동과 리드 작동을 제어할 수 있는 컨트롤러 또는 버퍼 매니저(buffer manager)로 불릴 수 있다.
제3인터페이스(350)는, CPU(330) 또는 CPU(330)에서 실행되는 펌웨어(예컨대, 제1롬 코드 또는 제1펌웨어)의 제어에 따라, 복수의 메인 채널들(CHA, CHB, …, CHC) 중에서 해당하는 메인 채널을 통해 메모리 클러스터(400)에 대한 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있다.
실시 예들에 따라, 제3인터페이스(350)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
제3인터페이스(350)는 에러 정정 코드(error correction code(ECC)) 엔진(미도시)을 포함할 수 있다. 상기 EEC 엔진은 메모리 클러스터(400)에 저장될 데이터 또는 메모리 클러스터(400)로부터 출력된 데이터에 포함된 에러를 정정할 수 있다. 실시 예에 따라, ECC 엔진은 메인 컨트롤러(310) 내부의 어디라도 구현될 수 있다.
DRAM 장치(360)는, 버퍼 컨트롤러(340)의 제어에 따라, 데이터를 라이트하거나 데이터를 리드할 수 있다. 실시 예들에 따라, DRAM 장치(360)는 휘발성 메모리 장치의 일 실시 예이다.
DRAM 장치(360)는 복수의 클러스터들(410, 430, …, 450)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑(mapping) 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(330)에 의해 실행되는 제1FTL 코드는 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
실시 예들에 따라, 메인 컨트롤러(310)와 DRAM 장치(360) 각각이 서로 다른 반도체 칩(chip)으로 구현될 때, 메인 컨트롤러(310)와 DRAM 장치(360)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지 (multi-chip package(MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, DRAM 장치(360)를 포함하는 제1반도체 칩은 메인 컨트롤러(310)를 포함하는 제2반도체 칩의 위(above)에 스택 볼들(stack balls)을 통해 적층(stack)될 수 있다.
PMIC(370)는 메인 컨트롤러(310), DRAM 장치(360), 및 메모리 클러스터(400) 각각으로 공급되는 동작 전압을 제어할 수 있다. 예컨대, 메인 컨트롤러(310)로 공급되는 제1동작 전압(PW1), 메모리 클러스터(400)로 공급되는 제2작동 전압(PW2), 및 DRAM 장치(360)로 공급되는 제3동작 전압(PW3)은 서로 동일하거나 서로 다를 수 있다. 도 6에 도시된 바와 같이, 제1동작 전압(PW1)의 제1공급 시점(T1)은 제2동작 전압(PW2)의 제2공급 시점(T2)보다 느리다. 즉, 시점들(T2와 T1) 사이에는 시간 차이(TD)가 존재한다. 제2동작 전압(PW2)의 파워 시퀀스는 제1동작 전압(PW1)의 파워시퀀스보다 빠르다. 비록, 도 6에서는 각 동작 전압(PW1과 PW2)의 레벨(VL)이 동일하게 도시되어 있으나 실시 예들에 따라 서로 다를 수 있다.
메모리 클러스터(400)는 복수의 클러스터들(410, 430, …, 450)을 포함할 수 있다. 제1클러스터(410)는 제1메인 채널(CHA)에 접속될 수 있고, 제2클러스터(430)는 제2메인 채널(CHB)에 접속될 수 있고, 제3클러스터(450)는 제3메인 채널(CHC)에 접속될 수 있다.
복수의 클러스터들(410, 430, …, 450) 각각의 구조는 도 2부터 도 5를 참조하여 상세히 설명될 것이다. 복수의 클러스터들(410, 430, …, 450) 각각은 복수의 스케일-아웃 저장 장치들을 포함할 수 있다. 복수의 클러스터들(410, 430, …, 450) 각각은 적어도 하나의 스케일-아웃 장치와 복수의 불휘발성 메모리 장치들을 포함할 수 있다.
본 명세서에서 메인 채널(main channel) 또는 채널은 메인 컨트롤러(310)의 제3인터페이스(350)와 해당 클러스터 사이에 존재하는 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다.
웨이(way)는 하나의 메인 채널 또는 채널을 공유하는 하나 또는 그 이상의 불휘발성 메모리 장치들의 그룹을 의미할 수 있다. 따라서, 하나의 메인 채널 또는 채널에는 복수의 웨이들이 접속될 수 있다. 상기 불휘발성 메모리 장치는 다이 (die), 메모리 장치, 또는 메모리 패키지를 의미할 수 있다. 메인 컨트롤러(310)는 A-채널*B-웨이를 제어할 수 있다. 이때, A과 BM 각각은 1 이상의 자연수를 의미할 수 있다.
복수의 불휘발성 메모리 장치들 각각은 메모리 셀 어레이를 포함할 수 있다. 상기 메모리 셀 어레이는 복수의 메모리 셀들을 포함할 수 있다. 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 복수의 메모리 셀들 각각은 2차원 메모리 셀 또는 3차원 메모리 셀로 구현될 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역(active region)을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착(directly deposited )되는 것을 의미한다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
도 2는 도 1에 도시된 데이터 저장 장치의 구체적인 블록도이고, 도 3은 도 2에 도시된 제1클러스터의 실시 예를 나타내는 블록도이다. 도 2에 도시된 데이터 저장 장치(300)는 스케일-아웃(scale-out) 구조로 구현될 수 있으나 이에 한정되는 것은 아니다. 제1클러스터(410)는 복수의 스케일-아웃 저장 장치들을 포함할 수 있다. 제1스케일-아웃 저장 장치(scale-out storage or scale-out storage device)는 제1스케일-아웃 장치(416-1)와 제1불휘발성 메모리 장치 그룹(GP1)을 포함할 수 있다. 제k스케일-아웃 저장 장치는 제k스케일-아웃 장치(416-k)와 제k불휘발성 메모리 장치 그룹(GPk)을 포함할 수 있다. 나머지 클러스터들(430~450) 각각의 구조는 제1클러스터(410)의 구조와 실질적으로 동일 또는 유사하므로, 나머지 클러스터들(430~450) 각각에 대한 상세한 설명은 생략한다.
도 1부터 도 3을 참조하면, 각 클러스터(410, 430, …, 450)의 구조와 동작은 실질적으로 동일 또는 유사하므로, 도 3에 도시된 제1클러스터(410)의 구조와 동작이 대표적으로 설명된다.
제1클러스터(410)는 스케일-아웃 장치들(416-1~416-k, k는 3 이상의 자연수)과 불휘발성 메모리 장치 그룹들(GP1~GPk)을 포함할 수 있다. 각 스케일-아웃 장치 (416-1~416-k)는 각 스케일-아웃 컨트롤러(415-1~415-k)와 각 휘발성 메모리 장치 (417-1~417-k)를 포함할 수 있다. 비록, 도 3에서는 복수의 스케일-아웃 저장 장치들이 도시되어 있으나, 제1클러스터(410)는 하나 또는 그 이상의 스케일-아웃 저장 장치들을 포함할 수 있다.
제1스케일-아웃 컨트롤러(415-1)는 제1메인 채널(CHA), 채널들(CH11~CH1m; m은 2 이상의 자연수), 및 제1휘발성 메모리 장치(417-1)에 접속될 수 있다. 각 채널(CH11~CH1m)에는 대응되는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다. 예컨대, 불휘발성 메모리 장치들(NAND) 각각은 NAND-타입 플래시 메모리 장치 또는 매니지드 NAND 플래시 메모리 장치일 수 있으나 이에 한정되는 것은 아니다.
제1스케일-아웃 컨트롤러(415-1)는 각 채널(CH11~CH1m)을 통해 불휘발성 메모리 장치들(NAND) 각각의 동작을 제어할 수 있다. 예컨대, 메인 컨트롤러(310)는 제1스케일-아웃 컨트롤러(415-1)의 동작을 제어할 수 있다.
제1휘발성 메모리 장치(417-1)는 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1영역을 포함할 수 있다. 또한, 제1휘발성 메모리 장치 (417-1)는 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2영역(또는 캐시 영역)을 더 포함할 수 있다.
제2스케일-아웃 컨트롤러(415-2)는 제1메인 채널(CHA), 채널들(CH21~CH2m), 및 제2휘발성 메모리 장치(417-2)에 접속될 수 있다. 각 채널(CH21~CH2m)에는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다.
제2스케일-아웃 컨트롤러(415-2)는 각 채널(CH21~CH2m)을 통해 불휘발성 메모리 장치들(NAND) 각각의 동작을 제어할 수 있다. 예컨대, 메인 컨트롤러(310)는 제2스케일-아웃 컨트롤러(415-2)의 동작을 제어할 수 있다.
제2휘발성 메모리 장치(417-2)는 각 채널(CH21~CH2m)에 접속된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1영역을 포함할 수 있다. 또한, 제2휘발성 메모리 장치 (417-2)는 각 채널(CH21~CH2m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CH21~CH2m)에 접속된 대응되는 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2영역(또는 캐시 영역)을 더 포함할 수 있다.
제k스케일-아웃 컨트롤러(415-k)는 제1메인 채널(CHA), 채널들(CHk1~CHkm), 및 제k휘발성 메모리 장치(417-k)에 접속될 수 있다. 각 채널(CHk1~CHkm)에는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다.
제k스케일-아웃 컨트롤러(415-k)는 각 채널(CHk1~CHkm)을 통해 불휘발성 메모리 장치들(NAND) 각각의 동작을 제어할 수 있다. 예컨대, 메인 컨트롤러(310)는 제k스케일-아웃 컨트롤러(415-k)의 동작을 제어할 수 있다.
제k휘발성 메모리 장치(417-k)는 각 채널(CHk1~CHkm)에 접속된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 매핑 정보(또는 매핑 테이블)를 저장할 수 있는 제1영역을 포함할 수 있다. 또한, 제k휘발성 메모리 장치 (417-k)는 각 채널(CHk1~CHkm)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나에 라이트될 데이터 또는 각 채널(CHk1~CHkm)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나로부터 출력된 데이터를 임시로 저장할 수 있는 제2영역(또는 캐시 영역)을 더 포함할 수 있다.
각 휘발성 메모리 장치(417-1~417-k)는 버퍼 또는 버퍼 메모리를 의미할 수 있고, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
비록, 도 3에서는 불휘발성 메모리 장치 그룹들(GP1~GPk) 각각이 동일한 채널들을 포함하는 것으로 도시되어 있으나, 실시 예들에 따라 불휘발성 메모리 장치 그룹들(GP1~GPk) 각각에 포함된 채널들의 개수는 서로 다를 수 있다.
도 4는 도 3에 도시된 제1스케일-아웃 장치의 개략도이고, 도 5는 도 4에 도시된 제1스케일-아웃 컨트롤러의 블록도이다. 도 1부터 도 5를 참조하면, 각 스케일-아웃 컨트롤러(415-1~415-k)의 구조와 동작은 실질적으로 동일 또는 유사하므로, 제1스케일-아웃 컨트롤러(415-1)의 구조와 동작이 대표적으로 설명될 것이다.
제1스케일-아웃 컨트롤러(415-1)는 메인 컨트롤러(310), 제1휘발성 메모리 장치(417-1), 및 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND) 사이에서 주거나 받는 데이터의 전송을 제어할 수 있다. 실시 예들에 따라, 제1스케일-아웃 컨트롤러(415-1)는 IC 또는 SoC로 구현될 수 있다.
제1스케일-아웃 컨트롤러(415-1)는 전송 매체(420), 제4인터페이스(421), CPU(423-1), 제2내부 메모리 장치(423-2), 제2ROM(425), 버퍼 컨트롤러(427), 및 제5인터페이스(429)를 포함할 수 있다.
전송 매체(예컨대, 전송 라인들 또는 버스; 420)는 AMBA, AHB, APB, AXI, ASB, ACE, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제4인터페이스(421)는 메인 컨트롤러(310)로 전송될 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 제1메인 채널(CHA)을 통해 메인 컨트롤러(310)로 전송할 수 있다. 또한, 제4인터페이스(421)는 메인 컨트롤러(310)로부터 전송된 신호들을 제1메인 채널(CHA)을 통해 수신하고, 수신된 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 CPU(423-1) 및/또는 버퍼 컨트롤러(427)로 전송할 수 있다. 실시 예에 따라, 제4인터페이스(421)는 신호들을 송수신할 수 있는 송수신기를 포함할 수 있다.
제4인터페이스(421)의 구조와 동작은 제3인터페이스(350)의 구조와 동작에 적합하게 구현될 수 있다. 예컨대, 제4인터페이스(421)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예에 따라, 도 4와 도 5를 참조하면, 제4인터페이스(421)는 하나의 채널(또는 하나의 메인 채널) 또는 하나의 웨이에 접속될 수 있다.
CPU(423-1)는 제4인터페이스(421), 제2내부 메모리 장치(423-2), 제2ROM (425), 버퍼 컨트롤러(427), 및 제5인터페이스(429)를 제어할 수 있다. CPU(423-1)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
예컨대, CPU(423-1)가 제3CPU와 제4CPU를 집합적으로 포함할 때, 상기 제3CPU는 제4인터페이스(421)를 통해 제3인터페이스(350)와 데이터를 주거나 받을 수 있고, 상기 제4CPU는 제5인터페이스(429)를 통해 각 채널(CH11~CH1m)에 접속된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나와 데이터를 주거나 받을 수 있다.
제2내부 메모리 장치(423-2)는 제1스케일-아웃 컨트롤러(415-1)의 동작에 필요한 데이터 또는 제1스케일-아웃 컨트롤러(415-1)에 의해 수행된 데이터 처리 동작(예컨대, 라이트 동작 또는 리드 동작)에 의해 생성된 데이터를 저장할 수 있다.
예컨대, 제2내부 메모리 장치(423-2)는 CPU(423)에 의해 실행될 수 있는 제2FTL(flash translation layer) 코드 또는 제2롬 코드를 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부트(boot)될 때, 제2FTL 코드는 메모리 클러스터(400)로부터 제2내부 메모리 장치(425)로 로드될 수 있고, 상기 제2롬 코드는 제2ROM(425)으로부터 제2내부 메모리 장치(425)로 로드될 수 있다. 실시 예들에 따라, 제2내부 메모리 장치(423-2)는 RAM, DRAM, SRAM, 버퍼, 버퍼 메모리, 캐시, 또는 TCM으로 구현될 수 있으나 이에 한정되는 것은 아니다. 제2내부 메모리 장치(423-2)는 제2TCM이고, 상기 제2TCM은 SRAM으로 구현된다고 가정한다.
제2ROM(425)은 제2ROM 코드를 저장할 수 있고, 제2ROM(425)은 마스크 ROM 또는 시리얼 NOR 플래시 메모리 장치로 구현될 수 있다.
버퍼 컨트롤러(427)는 CPU(423-1) 또는 CPU(423-1)에서 실행되는 펌웨어(예컨대, 제2펌웨어)의 제어에 따라, 제1DRAM 장치(417-1)에 데이터를 라이트하거나 제1DRAM 장치(417-1)로부터 데이터를 리드할 수 있다. 버퍼 컨트롤러(427)는 제1DRAM 장치(417-1)에 대한 라이트 작동과 리드 작동을 제어할 수 있는 컨트롤러 또는 버퍼 매니저로 불릴 수 있다.
제5인터페이스(429)는, CPU(423-1) 또는 CPU(423-1)에서 실행되는 펌웨어(예컨대, 제2펌웨어)의 제어에 따라, 복수의 채널들(CH11~CH1m) 중에서 해당하는 채널을 통해 불휘발성 메모리 장치들(NAND)에 대한 데이터 처리 작동들을 제어할 수 있다.
도 4와 도 5를 참조하면, 복수의 채널들(CH11~CH1m)은 제5인터페이스(429)에 접속될 수 있다. 실시 예들에 따라 제5인터페이스(429)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
제1DRAM 장치(417-1)는 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(423-1)에 의해 실행되는 제2FTL 코드는 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
도 6은 도 1에 도시된 데이터 저장 장치의 파워 시퀀스를 나타낸다. 도 1부터 도 6을 참조하면, 메모리 클러스터(400)로 공급되는 제2동작 전압(PW2)의 파워-업 시퀀스는 메인 컨트롤러(310)로 공급되는 제1동작 전압(PW1)의 파워-업 시퀀스보다 빠르다.
따라서, 본 발명의 실시 예에 따른 데이터 저장 장치(300)와 이의 동작 방법은 메인 컨트롤러(310)의 제1펌웨어의 부팅 시작 시점(또는 실행 시점)을 메모리 클러스터(400)의 제2펌웨어의 부팅 시작 시점(또는 실행 시점)보다 늦도록 제어하는 것이다.
도 7은 도 1에 도시된 데이터 저장 장치의 GPIO의 연결 관계를 나타낸다. 도 1과 도 7을 참조하면, 메인 컨트롤러(310)는 제1GPIO(general-purpose input/output(GPIO)) 핀들(301)을 포함하고, 메모리 클러스터(400)에 포함된 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각은 제2GPIO 핀들(401)을 포함한다. 제1GPIO 핀들(301) 각각과 제2GPIO 핀들(401) 각각은 서로 연결된다.
제1GPIO 핀들(301) 중에서 어느 하나의 핀(302)이 어떻게 설정되느냐에 따라 데이터 저장 장치(300)는 노말 부트 모드(normal boot mode) 또는 다운로드 모드를 수행할 수 있다.
예컨대, 어느 하나의 핀(302)으로 하이 레벨을 갖는 신호가 입력될 때, 데이터 저장 장치(300)는 다운로드 모드를 수행할 수 있다. 어느 하나의 핀(302)으로 아무런 신호도 입력되지 않을 때(예컨대, 오픈(open)되어 있을 때), 데이터 저장 장치(300)는 노말 부트 모드를 수행할 수 있다. 실시 예들에 따라, 노말 부트 모드 또는 다운로드 모드를 결정하는 방법은 다양하게 변경될 수 있다.
각 컨트롤러(310과 415-1)는 제1GPIO 핀들(301) 중에서 어느 하나의 핀(302)의 상태를 체크하여 데이터 저장 장치(300)의 동작 모드를 노말 부트 모드 또는 다운로드 모드로 결정할 수 있다.
도 8은 도 1에 도시된 제1ROM에 저장된 제1롬 코드의 실시 예를 나타낸다. 도 1과 도 8을 참조하면, 제1ROM(315)은 제1롬 코드(ROM_CODE1)를 저장할 수 있다. 제1롬 코드(ROM_CODE1)는 물리 명령을 위한 제1코드(PCODE)와 논리 명령을 위한 제2코드(LCODE)를 포함할 수 있다. 부트 시에 제1롬 코드(ROM_CODE1)는 제1TCM(331)으로 카피(또는 로드)될 수 있다. 각 코드(PCODE와 LCODE)는 마이크로코드 (microcode)일 수 있다.
도 9는 도 5에 도시된 제2ROM에 저장된 제2롬 코드의 실시 예를 나타낸다. 도 5와 도 9를 참조하면, 제2ROM(425)은 제2롬 코드(ROM_CODE2)를 저장할 수 있다. 제2롬 코드(ROM_CODE2)는 코드(CODE)를 포함할 수 있다. 코드(CODE)는 물리 명령 및/또는 논리 명령을 위한 마이크로코드일 수 있다.
도 10은 도 1의 메모리 클러스터의 제1블록과 제2블록에 저장된 데이터를 나타낸다. 도 10을 참조하면, 제1불휘발성 메모리 장치 그룹(GP1)은 제1블록 (BLOCK#0)과 제2블록(BLOCK#1)을 포함할 수 있다. 제1블록(BLOCK#0)과 제2블록 (BLOCK#1) 각각은 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND) 중에서 적어도 하나에 의해 정의될 수 있다. 제1블록(BLOCK#0)과 제2블록(BLOCK#1)은 동일한 불휘발성 메모리 장치에 포함될 수 있고 서로 다른 불휘발성 메모리 장치들 각각에 포함될 수 있다.
제1블록(BLOCK#0)은 제1스케일-아웃 장치(416-1)와 제1불휘발성 메모리 장치 그룹(GP1)을 포함하는 제1스케일-아웃 저장 장치에서 실행되는 제2 풀(full)-펌웨어(SEF)를 저장할 수 있다. 제2 풀-펌웨어(SEF)는 제2헤더(HEADER2), 제2부트 로더 (BL2), 및 제2펌웨어(MF2)를 포함할 수 있다. 제2헤더(HEADER2)는 제2부트 로더 (BL2)와 제2펌웨어(MF2)에 대한 정보를 포함할 수 있다.
제2블록(BLOCK#1)은 데이터 저장 장치(300)에서 실행되는 제1풀-펌웨어(EF)를 저장할 수 있다. 제1풀-펌웨어(EF)는 제1헤더(HEADER1), 제1부트 로더(BL1), 제1펌웨어(MF1), 제2헤더(HEADER2), 제2부트 로더(BL2), 및 제2펌웨어(MF2)를 포함할 수 있다. 실시 예들에 따라, 제1 풀-펌웨어(EF)는 제1부트 로더(BL1)를 포함할 수도 있고 포함하지 않을 수도 있다. 제1헤더(HEADER1)는 제1부트 로더(BL1)와 제1펌웨어(MF1)에 대한 정보를 포함할 수 있다. 제1펌웨어(MF1)는 제1메인(main) 펌웨어를 의미할 수 있고, 제2펌웨어(MF2)는 제2메인 펌웨어를 의미할 수 있다.
도 11은 제1메인 펌웨어의 쉐도잉을 개념적으로 나타낸다. 도 1과 도 11을 참조하면, 쉐도잉(shadowing)은 카피(copy) 또는 로드(load)를 의미할 수 있다. CPU(330)가 4개의 코어들(330-1~330-4)를 포함할 때, 4개의 TCM들(331-1~331-4)이 필요하다. 즉, CPU(330 또는 423-1)에 포함된 코어들의 개수만큼의 TCM들이 필요하다.
예컨대, DRAM 장치(360)에 저장된 제1펌위어(MF1)는 4개의 부분들(MF1-1~MF1-4)로 분리되고, 분리된 4개의 부분들(MF1-1~MF1-4) 각각은 4개의 TCM들(331-1~331-4) 각각으로 DRAM 장치(360)로부터 쉐도우, 카피 또는 로드될 수 있다. 4개의 TCM들(331-1~331-4) 각각으로 쉐도잉된 분리된 4개의 부분들(MF1-1~MF1-4) 각각은 4개의 코어들(330-1~330-4) 각각에 의해 동시에 또는 병렬적으로 실행될 수 있다.
도 12와 도 13은 도 1에 도시된 데이터 처리 시스템의 부트 시퀀스를 설명하는 개념도이다. 도 1부터 도 13을 참조하면, 도 6에 도시된 바와 같이 제1클러스터 (410)에 포함된 제1스케일-아웃 저장 장치로 공급되는 제2동작 전압(또는 제2파워; PW2)은 제1메인 컨트롤러(이하, "SSD 컨트롤러"라 한다)로 공급되는 제1동작 전압(또는 제1파워; PW1)보다 먼저 공급(또는 파워-업) 된다.
제1스케일-아웃 저장 장치로 제2동작 전압(PW2)이 충분히(fully) 공급되면, 상기 제1스케일-아웃 저장 장치의 제1스케일-아웃 컨트롤러(415-1)의 제2ROM(425)에 저장된 제2롬 코드(ROM_CODE2)는 CPU(423-1)에 의해 액세스 가능한 제2TCM(423-2)으로 카피된다(S110). 그 후 SSD 컨트롤러(310)로 제1동작 전압(PW1)이 충분히 공급되면, SSD 컨트롤러(310)의 제1ROM(315)에 저장된 제1롬 코드(ROM_CODE1)는 CPU(330)에 의해 액세스 가능한 제1TCM(331)으로 카피된다(S112).
제1TCM(331)으로 카피된 제1롬 코드(ROM_CODE1)는 SSD 컨트롤러(310)의 제1 GPIO 핀들(301) 각각의 상태를 체크하고(S114), 제2TCM(423-2)으로 카피된 제2롬 코드(ROM_CODE2)는 제1스케일-아웃 저장 장치의 제2GPIO 핀들(401) 각각의 상태를 체크한다(S116). 제1스케일-아웃 저장 장치는 도 7에 도시된 제1스케일-아웃 저장 장치(510)라고 가정한다.
제1GPIO 핀들(301) 중에서 어느 하나의 핀(302)이 오픈(open)되어 있다고 가정하면, 데이터 저장 장치(300)는 노말 부트 모드로 동작한다.
도 8에 도시된 바와 같이, SSD 컨트롤러(310)의 제1ROM(315)에 저장된 제1롬 코드(ROM_CODE1)는 물리(physical) 명령을 위한 제1코드(PCODE)와 논리(logical) 명령을 위한 제2코드(LCODE)를 포함할 수 있다. 도 9에 도시된 바와 같이, 제1스케일-아웃 컨트롤러(415-1)의 제2ROM(425)에 저장된 제2롬 코드(ROM_CODE2)는 코드 (CODE)를 포함할 수 있다.
SSD 컨트롤러(310)에서 실행되는 제1롬 코드(ROM_CODE1)는 제2인터페이스 (320), 예컨대 호스트 인터페이스를 초기화하고(S118), DRAM 장치(360)를 초기화하고(S118), SSD 컨트롤러(310)에서 실행되는 제1롬 코드(ROM_CODE)의 제1코드 (PCODE)는 제3인터페이스(350)의 구성 요소들을 설정하기 위해 제3인터페이스(350)로 다운로드 된다(S120). 제3인터페이스(350)는, 제1코드(PCODE)를 이용하여, 물리 명령을 처리하기 위해 상기 구성 요소들을 설정한다. 제3인터페이스(350)의 상기 구성 요소들은 물리 명령을 처리하기 위해 설정될 수 있다.
제1스케일-아웃 컨트롤러(415-1)에서 실행되는 제2롬 코드(ROM_CODE2)는 적어도 하나의 인터페이스(421 및/또는 429)를 초기화한다(S122). 제2롬 코드 (ROM_CODE2)에 포함한 코드(CODE)는 적어도 하나의 인터페이스(421 및/또는 429)가 물리 명령을 처리할 수 있도록 적어도 하나의 인터페이스(421 및/또는 429)로 다운로드 된다(S124). 적어도 하나의 인터페이스(421 및/또는 429)는, 코드(CODE)를 이용하여, 상기 물리 명령을 처리하기 위해 그 안에 포함된 구성 요소들을 설정한다.
제1롬 코드(ROM_CODE1)는 SSD 컨트롤러(310)에서 필요한 제1 풀-펌웨어(EF)를 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)로부터 DRAM 장치(360)로 다운로드하기 위한 제1물리 리드 명령(PRCMD1)과 레디 (ready)와 비지(busy)를 체크하기 위한 상태 명령(SCMD)을 제1스케일-아웃 컨트롤러(415-1)로 전송한다(S126).
제2롬 코드(ROM_CODE2)는 제1물리 리드 명령(PRCMD1)에 응답하여 제1스케일-아웃 컨트롤러(415-1)의 동작 상태를 비지(busy)로 설정한다(S128).
제2롬 코드(ROM_CODE2)는, 제1물리 리드 명령(PRCMD1)에 응답하여, 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 의해 정의된 제1블록(BLOCK#0)에 저장된 제2부트 로더(BL2)를 리드하고, 리드된 제2부트 로더(BL2)를 제2TCM(423-2)으로 카피(또는 로드)한다(S130). 제2부트 로더(BL2)가 제2TCM(423-2)으로 카피된 후, 제2롬 코드(ROM_CODE2)는 제2부트 로더(BL2)로 점프하고(S132), 제2부트 로더(BL2)가 실행된다.
제2부트 로더(BL2)는 제1DRAM 장치(417-1)를 초기화하고(S134), 글로벌 상태 레지스터(global state register(GSR))의 상태 필드에 현재 상태가 제2부트 로더 (BL2)가 실행되는 상태임을 설정한다. 즉, 상기 GSR의 상태 필드의 상태 정보는 제2부트 로더(BL2)가 실행되는 제2부트 로더(BL2) 상태로 설정된다(S136), 제2부트 로더(BL2)는 제1스케일-아웃 저장 장치를 초기화한다(S138).
제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 의해 정의된 제2블록(BLOCK#1)에 저장된 제1헤더(HEADER1), 제1부트 로더(BL1, 실시 예에 따라 제1부트 로더(BL1)는 존재하지 않을 수 있음), 제1펌웨어(MF1), 제2헤더(HEADER2), 제2부트 로더(BL2), 및 제2펌웨어(MF2)를 포함하는 제1 풀-펌웨어 (EF)가 SSD 컨트롤러(310)로 모두 전송될 때까지, 제1 풀-펌웨어(EF)는 일정한 크기 단위(예컨대, 16KByte)로 SSD 컨트롤러(310)로 전송된다. 예컨대, 제2부트 로더 (BL2)의 제어에 따라 제1 풀-펌웨어(EF)는 제1DRAM 장치(417-1)로 카피된 후 일정한 크기 단위(예컨대, 16KByte)로 SSD 컨트롤러(310)로 전송된다.
예컨대, 제2부트 로더(BL2)가, 제1물리 리드 명령(PRCMD1)에 응답하여, 제1DRAM 장치(417-1)에 저장된 제1 풀-펌웨어(EF)의 제1부분(EF-1)을 SSD 컨트롤러 (310)로 전송하면(S140), 제1롬 코드(ROM_CODE1)는 제1부분(EF-1)을 DRAM 장치 (360)에 저장한다.
제1롬 코드(ROM_CODE1)는 제2물리 리드 명령(PRCMD2)과 상태 명령(SCMD)을 제1스케일-아웃 컨트롤러(415-1)로 전송한다(S142). 제2부트 로더(BL2)가, 제2물리 리드 명령(PRCMD2)에 응답하여, 제1DRAM 장치(417-1)에 저장된 제1 풀-펌웨어(EF)의 제2부분(EF-2)을 SSD 컨트롤러(310)로 전송하면(S144), 제1롬 코드(ROM_CODE1)는 제2부분(EF-2)을 DRAM 장치(360)에 저장한다.
제1 풀-펌웨어(EF)가 m-개의 단위들로 나누어진다면, 제1롬 코드(ROM_CODE1)는 제m물리 리드 명령(PRCMDm)과 상태 명령(SCMD)을 제1스케일-아웃 컨트롤러(415-1)로 전송한다(S146). 제2부트 로더(BL2)가, 제m물리 리드 명령(PRCMDm)에 응답하여, 제1DRAM 장치(417-1)에 저장된 제1 풀-펌웨어(EF)의 제m부분(EF-m)을 SSD 컨트롤러(310)로 전송하면(S148), 제1롬 코드(ROM_CODE1)는 제m부분(EF-m)을 DRAM 장치 (360)에 저장한다. 상술한 단계들(S126~S148)을 통해, 제1 풀-펌웨어(EF)는 DRAM 장치(360)로 로드된다.
제1 풀-펌웨어(EF)가 일정한 크기 단위(예컨대, 16KByte)로 제1스케일-아웃 저장 장치의 제1DRAM 장치(417-1)로부터 DRAM 장치(360)로 전송되는 동안, 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 의해 정의된 제1블록(BLOCK#0)에 저장된 제2펌웨어(MF2)는 제1DRAM 장치(417-1)를 통해 제2TCM(423-2)으로 로드된다(S150). 실시 예들에 따라, 상술한 단계들(S126~S148)을 통해 제1 풀-펌웨어(EF)가 DRAM 장치(360)로 로드된 후, 제1블록(BLOCK#0)에 저장된 제2펌웨어(MF2)는 제1DRAM 장치(417-1)를 통해 제2TCM(423-2)으로 로드될 수 있다(S150).
DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함할 때, 제1부트 로더(BL1)는 DRAM 장치(360)로부터 제1TCM(331)으로 카피된다 (S152). 그러나 DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로더 (BL1)를 포함하지 않을 때, 단계(S152)는 수행되지 않는다.
DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함할 때 제1부트 로더(BL1)는 단계들(S154, S156, S158, 및 S166)을 수행하고, DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로드(BL1)를 포함하지 않을 때 SSD 컨트롤러(310)의 제1TCM(331)으로 로드된 제1롬 코드(ROM_CODE1)는 단계들(S154, S156, S158, 및 S166)을 수행한다.
제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함할 때에 제1부트 로더(BL1)는 또는 제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함하지 않을 때에 제1롬 코드 (ROM_CODE1)는 물리 모드를 논리 모드로 변경한다(S154). 상기 물리 모드는 물리 어드레스를 기반으로 동작하는 모드이고, 상기 논리 모드는 논리 어드레스를 기반으로 동작하는 모드이다. 따라서 물리 명령은 물리 어드레스를 포함하는 명령(예컨대, 라이트 명령 또는 리드 명령)이고, 상기 논리 명령을 논리 어드레스를 포함하는 명령(예컨대, 라이트 명령 또는 리드 명령)이다.
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제2코드(LCODE)를 제3인터페이스(350)로 다운로드 한다(S156). 제3인터페이스(350)는 제2코드(LCODE)를 이용하여 논리 명령을 처리하기 위한 인터페이스로 설정된다(S156).
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 부트 명령, 즉 제2펌웨어 (MF2)의 실행을 지시하는 실행 명령을 제1스케일-아웃 컨트롤러(415-1)로 전송한다 (S158). 제2부드 로더(BL2)는 제2펌웨어(MF2)의 실행을 지시하는 상기 실행 명령에 응답하여 제2펌웨어(MF2)로 점프한다(S160). 따라서, 제2펌웨어(MF2)가 부트 또는 실행된다.
제2펌웨어(MF2)는 글로벌 상태 레지스터(GSR)의 상태 필드에 현재 상태가 제2펌웨어(MF2)가 실행되는 상태임을 설정할 수 있다. 즉, 상기 글로벌 상태 레지스터(GSR)의 상태 필드의 상태 정보는 제2펌웨어(MF2)가 실행되는 제2펌웨어(MF2) 상태로 설정된다(S162).
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제1스케일-아웃 컨트롤러 (415-1)의 상태가 제2부트 로더(BL2) 상태로부터 제2펌웨어(MF2) 상태로 변경되었는지를 확인하기 위해 글로벌 상태 레지스터(GSR)를 리드한다(S164). 제2펌웨어 (MF2)는 제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)로부터 전송된 명령에 응답하여 글로벌 상태 레지스터(GSR)를 SSD 컨트롤러(310)로 전송할 수 있다(S164).
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 상기 글로벌 상태 레지스터(GSR)의 상태 필드에 포함된 정보를 확인하고, DRAM 장치(360)에 저장된 제1펌웨어(MF1)를 제1TCM(331)으로 카피한다(S166).
제1펌웨어(MF1)가 제1TCM(331)으로 카피된 후, 제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE)는 제1펌웨어(MF1)로 점프한다(S168). 예컨대, 도 11을 참조하여 설명한 바와 같이, CPU(330)가 복수의 코어들(330-1~330-4)을 포함하고, 복수의 코어들(330-1~330-4) 각각에 해당하는 TCM들(331-1~331-4)이 SSD 컨트롤러(310)에 존재할 때, 제1펌웨어(MF1)의 부분들(MF1-1~MF1-4) 각각은 TCM들(331-1~331-4) 각각으로 로드된다(S166). 따라서, TCM들(331-1~331-4) 각각으로 로드된 부분들(MF1-1~MF1-4) 각각에 의해 복수의 코어들(330-1~330-4) 각각은 동시에 활성화된다. 즉, 제1펌웨어(MF1)가 CPU(330)에 의해 실행된다(S170).
예컨대, 제1코어(330-1)는 TCM(331-1)으로 로드된 제1부분(MF1-1)을 실행하고, 제2코어(330-2)는 TCM(331-2)으로 로드된 제2부분(MF1-2)을 실행하고, 제3코어(330-3)는 TCM(331-3)으로 로드된 제3부분(MF1-3)을 실행하고, 제4코어(330-4)는 TCM(331-4)으로 로드된 제4부분(MF1-4)을 실행한다. 각 부분(MF1-1~MF1-4)의 크기는 동일할 수도 있고 서로 다를 수도 있다.
복수의 코어들(330-1~330-4) 중에서 어느 하나의 코어(예컨대, 330-1)에 의해 실행되는 제1펌웨어(MF1)의 제1부분(MF1-1)은 제1펌웨어(MF1) 및/또는 제2펌웨어(MF2)의 버전(version)을 체크할 수 있다(S172).
예컨대, 제1펌웨어(MF1)의 제1부분(MF1-1)은 제1스케일-아웃 컨트롤러(415-1)로부터 이전에 수신된 글로벌 상태 레지스터(GSR)를 제1스케일-아웃 컨트롤러 (415-1)로 전송하고(S174), 제1스케일-아웃 컨트롤러(415-1)에서 실행되는 제2펌웨어(MF2)는 상기 글로벌 상태 레지스터(GSR)의 상태 필드에 자신의 버전 정보를 라이트한다(S176). 제2펌웨어(MF2)는 라이트된 버전 정보를 포함하는 글로벌 상태 레지스터(GSR')를 SSD 컨트롤러(310)로 전송한다(S178). 즉, 제1펌웨어(MF1)의 제1부분(MF1-1)은 제2펌웨어(MF2)에 의해 수정된 글로벌 상태 레지스터(GSR')를 수신한다(S178). 글로벌 상태 레지스터(GSR 또는 GSR')는 데이터를 의미할 수 있다.
SSD 컨트롤러(310)는 제1스케일-아웃 저장 장치보다 늦게 부트된다. 비록, SSD 컨트롤러(310)와 하나의 스케일-아웃 저장 장치를 포함하는 데이터 저장 장치의 부트 시퀀스가 도 1부터 도 13을 참조하여 설명되었으나, 본 발명의 기술적 사상은 SSD 컨트롤러(310)와 복수의 스케일-아웃 저장 장치들을 포함하는 데이터 저장 장치(300)의 부트 시퀀스에 적용될 수 있다. 즉, 복수의 스케일-아웃 저장 장치들 모두가 부트된 후, SSD 컨트롤러(310)가 부트될 수 있다.
데이터 저장 장치(300)는 제1휘발성 메모리 장치(360), 제1스케일-아웃 저장 장치와, 제1휘발성 메모리 장치(360)와 상기 제1스케일-아웃 저장 장치를 제어하고, 제1펌웨어(MF1)를 실행하는 제1컨트롤러(310)를 포함한다. 상기 제1스케일-아웃 저장 장치는 제2휘발성 메모리 장치(417-1)와, 제1불휘발성 메모리 장치(GP1)와, 제2휘발성 메모리 장치(417-1)와 제1불휘발성 메모리 장치(GP1)를 제어하고, 제2펌웨어(MF2)를 실행하는 제2컨트롤러(415-1)를 포함한다. 제1불휘발성 메모리 장치(GP1)는 하나 또는 그 이상의 불휘발성 메모리 장치들(NAND)을 포함하는 집합적인 개념을 의미할 수 있다. 제1컨트롤러(310)는 제2펌웨어(MF2)의 부팅(또는 실행)이 제2컨트롤러(415-1)에 의해 완료된 후 제1펌웨어(MF1)의 부팅(또는 실행)을 수행한다.
도 6에 도시된 바와 같이, 데이터 저장 장치(300)는 제2시점(T2)에서 상기 제1스케일-아웃 저장 장치로 제2동작 전압(PW2)을 공급하고, 제1시점(T1)에서 제1컨트롤러(310)로 제1동작 전압(PW1)을 공급하는 전력 관리 IC(370)를 더 포함하고, 제2시점(T2)은 제1시점(T2)보다 빠르다.
도 10에 도시된 바와 같이, 제1불휘발성 메모리 장치(GP1)는 제2부트 로드 (BL2)와 제2펌웨어(MF2)를 포함하는 제2 풀-펌웨어(SEF)를 저장하는 제1블록 (BLOCK#0)과, 제1펌웨어(MF1), 제2부트 로더(BL2), 및 제2펌웨어(MF2)를 포함하는 제1 풀-펌웨어(EF)를 저장하는 제2블록(BLOCK#1)을 포함한다.
제2컨트롤러(415-1)는 제1컨트롤러(310)로부터 출력된 제1물리 리드 명령 (PRCMD1)에 응답하여 제2부트 로드(BL2)를 제1블록(BLOCK#0)으로부터 제2컨트롤러 (415-1)로 로드하고(S130), 제2부트 로드(BL2)를 이용하여 제2블록(BLOCK#1)에 저장된 제1 풀-펌웨어(EF)를 제1컨트롤러(310)를 전송하고(S140, S144, 및 S148), 제2부트 로드(BL2)를 이용하여 제1블록(BLOCK#0)에 저장된 제2펌웨어(MF2)를 제2컨트롤러(415-1)로 로드하고(S150), 제1 풀-펌웨어(EF)의 전송에 관련된 명령들은 제1물리 리드 명령(PRCMD1)을 포함하는 제2물리 리드 명령들(PRCMD1~PRCMDm)이다.
제2컨트롤러(415-1)는 제2휘발성 메모리 장치(417-1)를 경유하기 않고 제2부트 로더(BL2)를 제1블록(BLOCK#0)으로부터 제2컨트롤러(415-1)로 로드하고(S130), 제2부트 로더(BL2)를 이용하여 제2휘발성 메모리 장치(417-1)를 초기화하고(S134), 제2휘발성 메모리 장치(417-1)를 경유하여 제1 풀-펌웨어(EF)를 제1컨트롤러(310)를 전송하고(S140, S144, ..., S148), 제2휘발성 메모리 장치(417-1)를 경유하여 제2펌웨어(MF2)를 제2컨트롤러(415-1)로 로드한다(S150).
제1컨트롤러(310)는 제2컨트롤러(415-1)로부터 전송된 제1 풀-펌웨어(EF)를 제1휘발성 메모리 장치(360)에 저장하고, 제1컨트롤러(310)의 동작 모드를 물리 어드레스를 기반으로 동작하는 물리 모드로부터 논리 어드레스를 기반으로 동작하는 논리 모드로 변경하고(S154), 제2펌웨어(MF2)의 실행을 지시하는 실행 명령을 제2컨트롤러(415-1)로 전송한다(S158).
제2컨트롤러(415-1)는 상기 실행 명령에 응답하여 제2펌웨어(MF2)를 실행하고(S160), 제2펌웨어(MF2)가 실행됨을 지시하는 지시 신호를 제1컨트롤러(310)로 전송하고(S164), 제1컨트롤러(310)는, 상기 지시 신호에 응답하여, 제1휘발성 메모리 장치(360)에 저장된 제1 풀-펌웨어(EF)에 포함된 제1펌웨어(MF1)를 제1컨트롤러 (310)로 로드하고(S166), 제1펌웨어(MF1)를 실행한다(S170).
제1펌웨어(MF1)를 실행하는 제1컨트롤러(310)는 버전 확인 명령을 제2컨트롤러(415-1)로 전송하고(S174), 제2컨트롤러(415-1)는 상기 버전 확인 명령에 응답하여 제2펌웨어(MF2)의 버전에 대한 버전 정보를 제1컨트롤러(310)로 전송한다 (S178).
도 14와 도 15는 도 1에 도시된 데이터 처리 시스템의 펌웨어 다운로드 시퀀스를 설명하는 개념도이다. 도 1부터 도 11, 도 14, 및 도 15를 참조하면, 도 6에 도시된 바와 같이 제1클러스터(410)에 포함된 제1스케일-아웃 저장 장치로 공급되는 제2동작 전압(또는 제2파워; PW2)은 SSD 컨트롤러(310)로 공급되는 제1동작 전압(또는 제1파워; PW1)보다 먼저 공급된다.
제1스케일-아웃 저장 장치로 제2동작 전압(PW2)이 충분히(fully) 공급되면, 상기 제1스케일-아웃 저장 장치의 제1스케일-아웃 컨트롤러(415-1)의 제2ROM(425)에 저장된 제2롬 코드(ROM_CODE2)는 CPU(423-1)에 의해 액세스 가능한 제2TCM(423-2)으로 카피된다(S210). 그 후 SSD 컨트롤러(310)로 제1동작 전압(PW1)이 충분히 공급되면, SSD 컨트롤러(310)의 제1ROM(315)에 저장된 제1롬 코드(ROM_CODE1)는 CPU(330)에 의해 액세스 가능한 제1TCM(331)으로 카피된다(S212).
제1TCM(331)으로 카피된 제1롬 코드(ROM_CODE1)는 SSD 컨트롤러(310)의 제1 GPIO 핀들(301)을 체크하고(S214), 제2TCM(423-2)으로 카피된 제2롬 코드 (ROM_CODE2)는 제1스케일-아웃 저장 장치의 제2GPIO 핀들(401)을 체크한다(S216). 제1스케일-아웃 저장 장치는 도 7에 도시된 제1스케일-아웃 저장 장치(510)라고 가정한다.
제1GPIO 핀들(301) 중에서 어느 하나의 핀(302)으로 하이 레벨을 갖는 신호가 공급된다고 가정하면, 데이터 저장 장치(300)는 다운로드 모드로 동작한다.
SSD 컨트롤러(310)에서 실행되는 제1롬 코드(ROM_CODE1)는 제2인터페이스 (320), 예컨대 호스트 인터페이스를 초기화하고(S218), DRAM 장치(360)를 초기화하고(S218), 제1롬 코드(ROM_CODE)의 제1코드(PCODE)는 제3인터페이스(350)로 다운로드 된다(S220). 제3인터페이스(350)는 제1코드(PCODE)를 이용하여 물리 명령을 처리하기 위한 인터페이스로 설정된다.
호스트(200)는 도 10을 참조하여 설명한 제1 풀-펌웨어(EF)를 인터페이스 (110)를 통해 SSD 컨트롤러(310)로 전송할 수 있다(S222). 제1롬 코드(ROM_CODE)는 제1 풀-펌웨어(EF)를 DRAM 장치(360)에 저장할 수 있다(S224).
DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함할 때, 제1롬 코드(ROM_CODE)는 제1부트 로더(BL1)를 DRAM 장치(360)로부터 제1TCM(331)으로 카피(로드(load) 또는 쉐도우(shadow))한다(S226).
DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함할 때, 제1부트 로더(BL1)는 단계들(S228, S230, S232, S246, S250, S254, 및 S266)을 수행하고, DRAM 장치(360)로 다운로드된 제1 풀-펌웨어(EF)가 제1부트 로더(BL1)를 포함하지 않을 때 제1롬 코드(ROM_CODE)는 단계들(S228, S230, S232, S246, S250, S254, 및 S266)을 수행할 수 있다.
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 SSD 컨트롤러(310)의 동작 모드를 물리 모드로부터 논리 모드로 변경한다(S228). 제1롬 코드(ROM_CODE)의 제2코드(LCODE)는 제3인터페이스(350)로 다운로드 된다(S230). 제3인터페이스(350)는 제2코드(LCODE)를 이용하여 논리 명령을 처리하기 위한 인터페이스로 설정된다.
상술한 바와 같이, 물리 모드는 물리 명령을 실행(또는 처리)할 수 있는 모드이고, 논리 모드는 논리 명령을 실행(또는 처리)할 수 있는 모드이다. 상기 물리 명령은 물리 어드레스를 기반으로 하는 명령이고, 상기 논리 명령은 논리 어드레스를 기반으로 하는 명령이다.
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 논리 명령을 제1스케일-아웃 저장 장치로 전송한다. 예컨대, 제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제2헤더(HEADER2)와 제2부트 로더(BL2)를 제1스케일-아웃 컨트롤러(415-1)로 전송한다(S232).
제1스케일-아웃 컨트롤러(415-1)에서 실행되는 제2롬 코드(ROM_CODE2)는 제2부트 로더(BL2)를 제2TCM(423-2)에 바로 저장한다. 즉, 제1DRAM 장치(417-1)가 아직 초기화되지 않았으므로, 제2롬 코드(ROM_CODE2)는 제2부트 로더(BL2)를 제1DRAM 장치(417-1)를 경유하지 않고 제2TCM(423-2)에 바로 저장한다. 제2롬 코드 (ROM_CODE2)는 제2부트 로더(BL2)로 점프한다(S236). 따라서, 제2부트 로더(BL2)가 실행된다(S238).
제2부트 로더(BL2)는 제1DRAM 장치(417-1)를 초기화하고, 제2부트 로더(BL2)는 글로벌 상태 레지스터의 상태 필드에 현재 상태가 제2부트 로더(BL2)가 실행되는 상태임을 설정한다. 즉, 상기 글로벌 상태 레지스터의 상태 필드의 상태 정보는 제2부트 로더(BL2)가 실행되는 제2부트 로더(BL2) 상태로 설정된다(S242). 제2부트 로더(BL2)는 제1스케일-아웃 저장 장치에서 초기화될 구성 요소들을 초기화한다(S244).
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제1스케일-아웃 저장 장치의 제2 풀-펌웨어(SEF)의 저장과 관련된 논리 명령과 제2 풀-펌웨어(SEF)를 상기 제1스케일-아웃 저장 장치로 전송한다(S246). 제2 풀-펌웨어(SEF)는 도 10에 도시된 바와 같이 제2헤더(HEADER2), 제2부트 로더(BL2), 및 제2펌웨어(MF2)를 포함한다. 제2부트 로더(BL2)는 제2 풀-펌웨어(SEF)를 제1DRAM 장치(417-1)에 저장하고, 제1DRAM 장치(417-1)에 저장된 제2 풀-펌웨어(SEF)를 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 의해 정의된 제1블록(BLOCK#0)에 라이트한다(S248).
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제1 풀-펌웨어(EF)의 저장과 관련된 논리 명령과 제1 풀-펌웨어(EF)를 제1스케일-아웃 저장 장치로 전송한다(S250). 도 10에 도시된 바와 같이 제1 풀-펌웨어(EF)는 제1헤더(HEADER1), 제1부트 로더(BL1, 실시 예들에 따라 제1부트 로더(BL1)는 존재할 수도 있고 존재하지 않을 수도 있음), 제1펌웨어(MF1), 제2헤더(HEADER2), 제2부트 로더(BL2), 및 제2펌웨어(MF2)를 포함한다.
제2부트 로더(BL2)는 제1 풀-펌웨어(EF)를 제1DRAM 장치(417-1)에 저장하고, 제1DRAM 장치(417-1)에 저장된 제1 풀-펌웨어(SEF)를 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 의해 정의된 제1블록(BLOCK#1)에 라이트한다(S252).
제1부트 로더(BL) 또는 제1롬 코드(ROM_CODE1)는 제2펌웨어(MF2)의 실행을 지시하는 명령을 제1스케일-아웃 컨트롤러(415-1)로 전송한다(S254). 제2부트 로더(BL2)는 제2펌웨어(MF2)의 실행을 지시하는 상기 명령에 응답하여 제1DRAM 장치 (417-1)에 저장된 제2펌웨어(MF2)를 제2TCM(423-2)으로 카피한다(S256). 본 명세서에서 카피(copy)는 쉐도우(shadow)과 같은 의미로 사용될 수 있다.
제2펌웨어(MF2)가 제2TCM(423-2)으로 카피되면, 제2부트 로더(BL2)는 제2펌웨어(MF2)로 점프한다(S258). 따라서, 제2펌웨어(MF2)가 실행된다(S260). 제2펌웨어(MF2)는 글로벌 상태 레지스터의 상태 필드에 현재 상태가 제2펌웨어(MF2)가 실행되는 상태임을 설정한다. 즉, 상기 글로벌 상태 레지스터의 상태 필드의 상태 정보는 제2펌웨어(MF2)가 실행되는 제2펌웨어(MF2) 상태로 설정된다(S262).
제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제1스케일-아웃 컨트롤러(415-1)로부터 글로벌 상태 레지스터를 리드한다(S264). 상기 글로벌 상태 레지스터는 상태 정보를 저장하는 상태 정보 저장 영역과 버전 정보를 저장하는 버전 정보 저장 영역을 포함할 수 있다.
상기 글로벌 상태 레지스터가 리드된 후, 제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 DRAM 장치(360)에 저장된 제1펌웨어(MF1)를 CPU(330)에 의해 액세스 가능한 제1TCM(331)로 카피한다(S266). 예컨대, 도 11을 참조하여 설명한 바와 같이, CPU(330)가 복수의 코어들(330-1~330-4)을 포함하고, 복수의 코어들(330-1~330-4) 각각에 해당하는 TCM들(331-1~331-4)이 SSD 컨트롤러(310)에 존재할 때, 제1펌웨어(MF1)의 부분들(MF1-1~MF1-4) 각각은 TCM들(331-1~331-4) 각각으로 로드된다(S266). DRAM 장치(360)에 저장된 제1펌웨어(MF1)가 제1TCM(331)로 카피된 후, 제1부트 로더(BL1) 또는 제1롬 코드(ROM_CODE1)는 제1펌웨어(MF1)로 점프한다 (S268).
따라서, TCM들(331-1~331-4) 각각으로 로드된 부분들(MF1-1~MF1-4) 각각에 의해 복수의 코어들(330-1~330-4) 각각은 동시에 활성화된다. 즉, 제1펌웨어(MF1)가 CPU(330)에 의해 실행된다(S270).
SSD 컨트롤러(310)의 제1펌웨어(MF1)는 제1스케일-아웃 저장 장치의 제2펌웨어(MF2)보다 늦게 실행된다. SSD 컨트롤러(310)의 제1펌웨어(MF1)는 제1스케일-아웃 저장 장치의 제2펌웨어(MF2)보다 늦게 불휘발성 메모리 장치들(NAND)에 라이트될 수 있다.
비록, SSD 컨트롤러(310)와 하나의 스케일-아웃 저장 장치를 포함하는 데이터 저장 장치의 다운로드 시퀀스가 도 14와 도 15를 참조하여 설명되었으나, 본 발명의 기술적 사상은 하나의 SSD 컨트롤러(310)와 복수의 스케일-아웃 저장 장치들을 포함하는 데이터 저장 장치의 다운로드 시퀀스에 적용될 수 있다. 즉, 복수의 스케일-아웃 저장 장치들 각각에 대한 펌웨어가 상기 복수의 스케일-아웃 저장 장치들 각각에서 실행된 후, SSD 컨트롤러(310)에 대한 펌웨어가 실행될 수 있다.
제1컨트롤러(310)는 제1컨트롤러(310)에 연결된 외부 장치로부터 제1펌웨어 (MF1), 제2부트 로더(BL2), 및 제2펌웨어(MF2)를 포함하는 제1 풀-펌웨어(EF)를 수신하고(S222), 제1 풀-펌웨어(EF)를 제1휘발성 메모리 장치(360)에 저장한다 (S224).
제1컨트롤러(310)는 제1컨트롤러(310)의 동작 모드를 물리 어드레스를 기반으로 동작하는 물리 모드로부터 논리 어드레스를 기반으로 동작하는 논리 모드로 변경하고(S228), 제1논리 명령을 이용하여 제2헤더(HEADER2)와 제2부트 로더(BL2)를 제2컨트롤러(415-1)로 전송하고(S232), 제2컨트롤러(415-1)는 제2부트 로더 (BL2)를 이용하여 제2휘발성 메모리 장치(417-1)를 초기화한다(S240).
제1컨트롤러(310)는, 제2논리 명령을 이용하여, 제2부트 로더(BL2)와 제2펌웨어(MF2)를 포함하는 제2 풀-펌웨어(SEF)를 제2컨트롤러(415-1)로 전송하고 (S246), 제2컨트롤러(415-1)는 제2 풀-펌웨어(SEF)를 제2휘발성 메모리 장치(417-1)를 경유하여 제1불휘발성 메모리 장치(GP1)의 제1블록(BLOCK#0)에 라이트한다 (S248).
제1컨트롤러(310)는, 제3논리 명령을 이용하여, 제1 풀-펌웨어(EF)를 제2컨트롤러(415-1)로 전송하고(S250), 제2컨트롤러(310)는 제1 풀-펌웨어(SEF)를 제2휘발성 메모리 장치(417-1)를 경유하여 제1불휘발성 메모리 장치(GP1)의 제2블록 (BLOCK#1)에 라이트한다(S252).
제1컨트롤러(310)는 제2펌웨어(MF2)의 실행을 지시하는 실행 명령을 제2컨트롤러(415-1)로 전송하고(S254), 제2컨트롤러(415-1)는, 상기 실행 명령에 응답하여, 제2휘발성 메모리 장치(417-1)에 저장된 제2 풀-펌웨어(SEF)에 포함된 제2펌웨어(MF2)를 제2컨트롤러로 로드하여 실행하고(S256~S260), 제2펌웨어(MF2)가 실행됨을 지시하는 지시 신호를 제1컨트롤러(310)로 전송한다(S264).
제1컨트롤러(310)는, 상기 지시 신호에 응답하여, 제1휘발성 메모리 장치 (360)에 저장된 제1 풀-펌웨어(EF)에 포함된 제1펌웨어(MF1)를 제1컨트롤러(310)로 로드하고(S266), 제1펌웨어(MF1)를 실행한다(S270).
상기 외부 장치는 호스트(200)와 제2스케일-아웃 저장 장치 중에서 어느 하나이고, 상기 제2스케일-아웃 저장 장치는 제3휘발성 메모리 장치(417-2)와, 제1 풀-펌웨어(EF)를 저장하는 제2불휘발성 메모리 장치(GP2)와, 제3휘발성 메모리 장치(417-2)와 제2불휘발성 메모리 장치(GP2)를 제어하는 제3컨트롤러(415-2)를 포함한다. 즉, 상기 외부 장치가 호스트(200)일 때, 호스트(200)는 제1 풀-펌웨어(EF)를 제1컨트롤러(310)로 전송한다(S222).
도 16a부터 도 16c는 복수의 스케일-아웃 저장 장치들 사이의 펌웨어 불일치를 제거하는 방법을 설명하는 개념도이다. 도 1부터 도 16c를 참조하여 복수의 스케일-아웃 저장 장치들 사이의 펌웨어 불일치를 제거하는 방법이 설명된다.
각 스케일-아웃 저장 장치(510, 520, 530, 및 540)는 스케일-아웃 장치와 복수의 불휘발성 메모리 장치들을 포함할 수 있다. 상기 스케일-아웃 장치의 구조는 도 3부터 도 5를 참조하여 설명된 스케일-아웃 장치(416-1)와 동일하고, 복수의 불휘발성 메모리 장치들은 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 복수의 불휘발성 메모리 장치들(NAND)과 동일하다.
SSD 컨트롤러(310)를 통해 복수의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각에 대한 펌웨어를 업데이트 또는 다운로드하는 도중에, 데이터 저장 장치(300)에서 갑작스런 파워 오프(sudden power off(SPO))가 발생할 수 있다.
예컨대, 도 16a에 도시된 바와 같이, 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 중에서 2개의 스케일-아웃 저장 장치들(510과 520) 각각의 펌웨어의 버전은 제1버전(VER1)으로부터 제2버전(VER2)으로 변경되었으나 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 중에서 나머지 2의 스케일-아웃 저장 장치들(530과 540) 각각의 펌웨어 버전은 제1버전(VER1)을 유지한다. 즉, 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 모두의 펌웨어 버전은 일치하지 않는다.
본 발명의 실시 예에 따른 데이터 저장 장치(300)는 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각의 펌웨어 버전이 모두 일치하지 않는 경우, 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 중에서 어느 하나의 펌웨어를 이용하여 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각의 펌웨어 버전을 모두 동일하게 일치시킬 수 있다.
즉, 도 12부터 도 15를 참조하여 설명한 바와 같이, 데이터 저장 장치(300)가 정상 상태로 복구된 후, SSD 컨트롤러(310)에서 실행되는 제1롬 코드 (ROM_CODE1)는 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 중에서 어느 하나로부터 SSD 컨트롤러(310)를 위한 펌웨어와 상기 어느 하나를 위한 펌웨어를 전송받거나 읽어올 수 있다. 예컨대, SSD 컨트롤러(310)에서 실행되는 제1롬 코드(ROM_CODE1)는 제1불휘발성 메모리 장치 그룹(GP1)에 포함된 불휘발성 메모리 장치들(NAND)에 의해 정의된 제2블록(BLOCK#1)에 저장된 제1 풀-펌웨어를 전송받거나 읽어올 수 있다.
SSD 컨트롤러(310)에서 실행되는 제1롬 코드(ROM_CODE1)는 제1 풀-펌웨어를 DRAM 장치(360)에 저장할 수 있다.
DRAM 장치(360)로 다운로드된 제1 풀-펌웨어가 제1부트 로더를 포함할 때 상기 제1부트 로더는 도 14와 도 15를 참조하여 설명된 단계들(S228, S230, S232, S246, S250, S254, 및 S266)을 수행하고, DRAM 장치(360)로 다운로드된 제1 풀-펌웨어가 상기 제1부트 로드를 포함하지 않을 때 SSD 컨트롤러(310)에서 실행되는 제1롬 코드(ROM_CODE1)는 단계들(S228, S230, S232, S246, S250, S254, 및 S266)을 수행을 수행한다.
도 15와 도 15를 참조하여 설명된 단계들(S228, S230, S232, S246, S250, S254, 및 S266)은 도 16b와 도 16c에 도시된 펌웨어 불일치를 극복하는 방법에 적용될 수 있다. 따라서, SSD 컨트롤러(310)의 펌웨어의 버전과 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각의 펌웨어의 버전은 최적의 펌웨어의 버전으로 일치될 수 있다.
도 16b에 도시된 바와 같이, SSD 컨트롤러(310)는 스케일-아웃 저장 장치 (510)의 펌웨어의 버전(VREA=VER2)을 이용하여 SSD 컨트롤러(310)의 펌웨어의 버전과 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각의 펌웨어의 버전을 일치시킬 수 있다.
도 16c에 도시된 바와 같이, SSD 컨트롤러(310)는 스케일-아웃 저장 장치 (550)의 펌웨어의 버전(VREA=VER1)을 이용하여 SSD 컨트롤러(310)의 펌웨어의 버전과 4개의 스케일-아웃 저장 장치들(510, 520, 530, 및 540) 각각의 펌웨어의 버전을 일치시킬 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 데이터 처리 시스템
110: 인터페이스
200: 호스트
300: 데이터 저장 장치
310: 메인 컨트롤러 또는 SSD 컨트롤러
315: 제1ROM
330: CPU
331: 제1TCM
360: DRAM 장치
370: 전력 관리 IC
400: 메모리 클러스터
416-1~416-k: 스케일-아웃 장치

Claims (20)

  1. 제1휘발성 메모리 장치;
    제1스케일-아웃 저장 장치;
    상기 제1휘발성 메모리 장치와 상기 제1스케일-아웃 저장 장치를 제어하고, 제1펌웨어를 실행하는 제1컨트롤러; 및
    제1시점보다 빠른 제2시점에서 상기 제1스케일-아웃 저장 장치로 제2동작 전압을 공급하고, 상기 제1시점에서 상기 제1컨트롤러로 제1동작 전압을 공급하는 전력 관리 IC를 포함하고,
    상기 제1스케일-아웃 저장 장치는,
    제2휘발성 메모리 장치;
    제1불휘발성 메모리 장치; 및
    상기 제2휘발성 메모리 장치와 상기 제1불휘발성 메모리 장치를 제어하고, 제2펌웨어를 실행하는 제2컨트롤러를 포함하고,
    상기 제1컨트롤러는 상기 제2펌웨어의 부팅이 상기 제2컨트롤러에 의해 완료된 후 상기 제1펌웨어의 부팅을 실행하는 데이터 저장 장치.
  2. 삭제
  3. 제1항에 있어서, 상기 제1불휘발성 메모리 장치는,
    제2부트 로더와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 저장하는 제1블록; 및
    상기 제1펌웨어, 상기 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 저장하는 제2블록을 포함하는 데이터 저장 장치.
  4. 제3항에 있어서,
    상기 제1불휘발성 메모리 장치는 복수의 메모리 셀들을 포함하고,
    상기 복수의 메모리 셀들 각각은 2차원 메모리 셀 또는 3차원 메모리 셀인 데이터 저장 장치.
  5. 제3항에 있어서, 상기 제2컨트롤러는,
    상기 제1컨트롤러로부터 출력된 제1물리 리드 명령에 응답하여 상기 제2부트 로더를 상기 제1블록으로부터 상기 제2컨트롤러로 로드하고,
    상기 제2부트 로더를 이용하여 상기 제2블록에 저장된 상기 제1 풀-펌웨어를 상기 제1컨트롤러로 전송하고,
    상기 제2부트 로더를 이용하여 상기 제1블록에 저장된 상기 제2펌웨어를 상기 제2컨트롤러로 로드하고,
    상기 제1 풀-펌웨어의 전송에 관련된 명령들은 상기 제1물리 리드 명령을 포함하는 제2물리 리드 명령들인 데이터 저장 장치.
  6. 제5항에 있어서, 상기 제2컨트롤러는,
    상기 제2휘발성 메모리 장치를 경유하기 않고 상기 제2부트 로더를 상기 제1블록으로부터 상기 제2컨트롤러로 로드하고,
    상기 제2부트 로더를 이용하여 상기 제2휘발성 메모리 장치를 초기화하고,
    상기 제2휘발성 메모리 장치를 경유하여 상기 제1 풀-펌웨어를 상기 제1컨트롤러를 전송하고,
    상기 제2휘발성 메모리 장치를 경유하여 상기 제2펌웨어를 상기 제2컨트롤러로 로드하는 데이터 저장 장치.
  7. 제3항에 있어서, 상기 제1컨트롤러는,
    상기 제2컨트롤러로부터 전송된 상기 제1 풀-펌웨어를 상기 제1휘발성 메모리 장치에 저장하고,
    상기 제1컨트롤러의 동작 모드를 물리 어드레스를 기반으로 동작하는 물리 모드로부터 논리 어드레스를 기반으로 동작하는 논리 모드로 변경하고,
    상기 제2펌웨어의 실행을 지시하는 실행 명령을 상기 제2컨트롤러로 전송하는 데이터 저장 장치.
  8. 제7항에 있어서,
    상기 제2컨트롤러는 상기 실행 명령에 응답하여 상기 제2펌웨어를 실행하고 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고,
    상기 제1컨트롤러는, 상기 지시 신호에 응답하여, 상기 제1휘발성 메모리 장치에 저장된 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행하는 데이터 저장 장치.
  9. 제8항에 있어서,
    상기 제1펌웨어를 실행하는 상기 제1컨트롤러는 버전 확인 명령을 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는 상기 버전 확인 명령에 응답하여 상기 제2펌웨어의 버전에 대한 버전 정보를 상기 제1컨트롤러로 전송하는 데이터 저장 장치.
  10. 제1항에 있어서, 상기 제1컨트롤러는,
    상기 제1컨트롤러에 연결된 외부 장치로부터 상기 제1펌웨어, 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 수신하여 상기 제1휘발성 메모리 장치에 저장하고,
    상기 제1컨트롤러의 동작 모드를 물리 어드레스를 기반으로 동작하는 물리 모드로부터 논리 어드레스를 기반으로 동작하는 논리 모드로 변경하고,
    제1논리 명령을 이용하여 상기 제2부트 로더를 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는 상기 제2부트 로더를 이용하여 상기 제2휘발성 메모리 장치를 초기화하는 데이터 저장 장치.
  11. 제10항에 있어서,
    상기 제1컨트롤러는, 제2논리 명령을 이용하여, 상기 제2부트 로더와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는 상기 제2 풀-펌웨어를 상기 제2휘발성 메모리 장치를 경유하여 상기 제1불휘발성 메모리 장치의 제1블록에 라이트하고,
    상기 제1컨트롤러는, 제3논리 명령을 이용하여, 상기 제1 풀-펌웨어를 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는 상기 제1 풀-펌웨어를 상기 제2휘발성 메모리 장치를 경유하여 상기 제1불휘발성 메모리 장치의 제2블록에 라이트하는 데이터 저장 장치.
  12. 제11항에 있어서,
    상기 제1컨트롤러는 상기 제2펌웨어의 실행을 지시하는 실행 명령을 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는, 상기 실행 명령에 응답하여, 상기 제2휘발성 메모리 장치에 저장된 상기 제2 풀-펌웨어에 포함된 상기 제2펌웨어를 상기 제2컨트롤러로 로드하여 실행하고, 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고,
    상기 제1컨트롤러는, 상기 지시 신호에 응답하여, 상기 제1휘발성 메모리 장치에 저장된 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행하는 데이터 저장 장치.
  13. 제10항에 있어서,
    상기 외부 장치는 호스트와 제2스케일-아웃 저장 장치 중에서 어느 하나이고,
    상기 제2스케일-아웃 저장 장치는,
    제3휘발성 메모리 장치;
    상기 제1 풀-펌웨어를 저장하는 제2불휘발성 메모리 장치; 및
    상기 제3휘발성 메모리 장치와 상기 제2불휘발성 메모리 장치를 제어하는 제3컨트롤러를 포함하는 데이터 저장 장치.
  14. 제1항에 있어서,
    상기 제1컨트롤러는 제1GPIO 핀들을 포함하고, 상기 제2컨트롤러는 제2GPIO 핀들을 포함하고,
    상기 제1GPIO 핀들 각각과 상기 제2GPIO 핀들 각각은 서로 연결되고,
    상기 제1컨트롤러와 상기 제2컨트롤러 각각은 상기 제1GPIO 핀들 중에서 어느 하나의 핀의 상태를 체크하여 상기 데이터 저장 장치의 동작 모드가 부트 모드인지 다운로드 모드인지를 판단하는 데이터 저장 장치.
  15. 제14항에 있어서, 상기 제1불휘발성 메모리 장치는,
    제2부트 로더와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 저장하는 제1블록; 및
    상기 제1펌웨어, 상기 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 저장하는 제2블록을 포함하고,
    상기 동작 모드가 상기 부트 모드일 때,
    상기 제2컨트롤러는 상기 제2블록에 저장된 상기 제1 풀-펌웨어를 상기 제1컨트롤러를 전송하고,
    상기 제2컨트롤러는 상기 제1블록에 저장된 상기 제2펌웨어를 상기 제2컨트롤러로 로드하고,
    상기 제2컨트롤러는 상기 제1컨트롤러로부터 전송된 상기 제2펌웨어의 실행을 지시하는 실행 명령에 응답하여 상기 제2펌웨어를 실행하고 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고,
    상기 제1컨트롤러는 상기 지시 신호에 응답하여 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행하는 데이터 저장 장치.
  16. 제14항에 있어서, 상기 제1불휘발성 메모리 장치는 제1블록과 제2블록을 포함하고,
    상기 동작 모드가 상기 다운로드 모드일 때,
    상기 제1컨트롤러는 상기 제1컨트롤러에 연결된 외부 장치로부터 상기 제1펌웨어, 제2부트 로더, 및 상기 제2펌웨어를 포함하는 제1 풀-펌웨어를 수신하여 상기 제1휘발성 메모리 장치에 저장하고,
    상기 제1컨트롤러는 상기 제2부트 로더와 상기 제2펌웨어를 포함하는 제2 풀-펌웨어를 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는 상기 제2 풀-펌웨어를 상기 제1블록에 라이트하고,
    상기 제1컨트롤러는 상기 제1 풀-펌웨어를 상기 제2컨트롤러로 전송하고,
    상기 제2컨트롤러는 상기 제1 풀-펌웨어를 상기 제2블록에 라이트하고,
    상기 제2컨트롤러는 상기 제1컨트롤러로부터 출력된 상기 제2펌웨어의 실행을 지시하는 실행 명령에 응답하여 상기 제2펌웨어를 실행하고, 상기 제2펌웨어가 실행됨을 지시하는 지시 신호를 상기 제1컨트롤러로 전송하고,
    상기 제1컨트롤러는 상기 지시 신호에 응답하여 상기 제1휘발성 메모리 장치에 저장된 상기 제1 풀-펌웨어에 포함된 상기 제1펌웨어를 상기 제1컨트롤러로 로드하여 상기 제1펌웨어를 실행하는 데이터 저장 장치.
  17. 제1휘발성 메모리 장치;
    스케일-아웃 저장 장치들; 및
    상기 제1휘발성 메모리 장치와 상기 스케일-아웃 저장 장치들을 제어하는 제1컨트롤러를 포함하고,
    상기 스케일-아웃 저장 장치들 각각은,
    제2휘발성 메모리 장치;
    불휘발성 메모리 장치; 및
    상기 제2휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하는 제2컨트롤러를 포함하고,
    상기 제1컨트롤러는 제1펌웨어를 실행하고,
    상기 스케일-아웃 저장 장치들 각각에 포함된 제2컨트롤러들 각각은 제2펌웨어들 각각을 실행하고, 상기 제2펌웨어들 각각이 실행됨을 지시하는 지시 신호들 각각을 상기 제1컨트롤러로 전송하고,
    상기 제1컨트롤러는 상기 지시 신호들 중에서 마지막 지시 신호에 응답하여, 상기 제1펌웨어를 실행하는 데이터 저장 장치.
  18. 삭제
  19. 제17항에 있어서,
    상기 제1컨트롤러는 상기 제2컨트롤러들 각각으로 버전 확인 명령을 전송하고,
    상기 제2컨트롤러들 각각은 상기 버전 확인 명령에 응답하여 상기 제2펌웨어들 각각의 버전에 대한 버전 정보를 상기 제1컨트롤러로 전송하는 데이터 저장 장치.
  20. 호스트; 및
    상기 호스트에 연결된 데이터 저장 장치를 포함하고,
    상기 데이터 저장 장치는,
    제1휘발성 메모리 장치;
    스케일-아웃 저장 장치;
    상기 제1휘발성 메모리 장치와 상기 스케일-아웃 저장 장치를 제어하고, 제1펌웨어를 실행하는 제1컨트롤러; 및
    제1시점보다 빠른 제2시점에서 상기 스케일-아웃 저장 장치로 제2동작 전압을 공급하고, 상기 제1시점에서 상기 제1컨트롤러로 제1동작 전압을 공급하는 전력 관리 IC를 포함하고,
    상기 스케일-아웃 저장 장치는,
    제2휘발성 메모리 장치;
    불휘발성 메모리 장치; 및
    상기 제2휘발성 메모리 장치와 상기 불휘발성 메모리 장치를 제어하고, 제2펌웨어를 실행하는 제2컨트롤러를 포함하고,
    상기 제1컨트롤러는 상기 제2펌웨어의 부팅이 상기 제2컨트롤러에 의해 완료된 후 상기 제1펌웨어의 부팅을 실행하는 데이터 처리 시스템.
KR1020160008160A 2016-01-07 2016-01-22 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 KR102395195B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/277,496 US10114550B2 (en) 2016-01-07 2016-09-27 Data storage device and data processing system including the data storage device
CN201611204422.6A CN106951180B (zh) 2016-01-07 2016-12-23 数据存储装置以及包括数据存储装置的数据处理系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160002310 2016-01-07
KR1020160002310 2016-01-07

Publications (2)

Publication Number Publication Date
KR20170082954A KR20170082954A (ko) 2017-07-17
KR102395195B1 true KR102395195B1 (ko) 2022-05-10

Family

ID=59442979

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160008160A KR102395195B1 (ko) 2016-01-07 2016-01-22 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템

Country Status (2)

Country Link
KR (1) KR102395195B1 (ko)
CN (1) CN106951180B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7058984B2 (ja) * 2017-11-20 2022-04-25 キヤノン株式会社 ファームウェア組み込み装置、制御方法、プログラム
KR20190115811A (ko) * 2018-04-04 2019-10-14 에스케이하이닉스 주식회사 확장 메모리 카드를 포함하는 데이터 처리 시스템
US11353870B2 (en) * 2018-12-31 2022-06-07 Baidu Usa Llc Autonomous driving computing and storage expansion device with flexible host and client configuration
DE102019107853B4 (de) * 2019-03-27 2020-11-19 Schölly Fiberoptic GmbH Verfahren zur Inbetriebnahme einer Kamerasteuerungseinheit (CCU)
US20220229650A1 (en) * 2021-01-21 2022-07-21 Nvidia Corporation Semiconductor component update device
CN114253619A (zh) * 2021-12-21 2022-03-29 苏州忆联信息系统有限公司 SSD多级Boot的方法、装置、计算机设备及存储介质
KR20230139262A (ko) * 2022-03-25 2023-10-05 삼성전자주식회사 시스템 부팅을 위한 컨트롤러를 포함하는 전자 장치 및 그의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150347151A1 (en) 2014-05-28 2015-12-03 Diablo Technologies Inc. System and method for booting from a non-volatile memory
US20160062698A1 (en) 2014-08-26 2016-03-03 Marvell World Trade Ltd. Storage device controller architecture

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513114B1 (en) * 1999-12-08 2003-01-28 Dell Products L.P. System and methods for providing selectable initialization sequences
US8412880B2 (en) * 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US9189385B2 (en) * 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
CN101937349B (zh) * 2010-08-28 2015-05-13 中兴通讯股份有限公司 一种无线通信终端及其软件升级方法
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
CN104115136B (zh) * 2011-09-30 2017-12-08 英特尔公司 非易失性随机访问存储器中存储bios的装置、方法和系统
CN103064692A (zh) * 2011-10-19 2013-04-24 北京市三希电子科技开发公司 一种固件的更新方法及装置
US9411605B2 (en) * 2013-08-29 2016-08-09 Samsung Electronics Co., Ltd. Device-less and system agnostic unified extensible firmware interface (UEFI) driver

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150347151A1 (en) 2014-05-28 2015-12-03 Diablo Technologies Inc. System and method for booting from a non-volatile memory
US20160062698A1 (en) 2014-08-26 2016-03-03 Marvell World Trade Ltd. Storage device controller architecture

Also Published As

Publication number Publication date
KR20170082954A (ko) 2017-07-17
CN106951180B (zh) 2021-04-20
CN106951180A (zh) 2017-07-14

Similar Documents

Publication Publication Date Title
KR102395195B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10114550B2 (en) Data storage device and data processing system including the data storage device
US11182078B2 (en) Method of accessing a data storage device using a multi-access command
KR102403266B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10324639B2 (en) Data storage device having multiple solid state drives for data duplication, and data processing system including the same
US10866797B2 (en) Data storage device and method for reducing firmware update time and data processing system including the device
US9996282B2 (en) Method of operating data storage device and method of operating system including the same
US10216578B2 (en) Data storage device for increasing lifetime and RAID system including the same
US20160203091A1 (en) Memory controller and memory system including the same
US20200050374A1 (en) Data storage devices, having scale-out devices to map and control groups on non-volatile memory devices
KR102417182B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10416886B2 (en) Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same
KR102397582B1 (ko) 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
US10331366B2 (en) Method of operating data storage device and method of operating system including the same
US11669470B2 (en) Storage system with capacity scalability and method of operating the same
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
KR102321478B1 (ko) 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant