KR20160022671A - 데이터 저장 장치의 동작 방법 - Google Patents

데이터 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR20160022671A
KR20160022671A KR1020140108526A KR20140108526A KR20160022671A KR 20160022671 A KR20160022671 A KR 20160022671A KR 1020140108526 A KR1020140108526 A KR 1020140108526A KR 20140108526 A KR20140108526 A KR 20140108526A KR 20160022671 A KR20160022671 A KR 20160022671A
Authority
KR
South Korea
Prior art keywords
boot
code
mode
sub
executing
Prior art date
Application number
KR1020140108526A
Other languages
English (en)
Other versions
KR102225313B1 (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 KR1020140108526A priority Critical patent/KR102225313B1/ko
Priority to US14/566,266 priority patent/US9606811B2/en
Priority to TW104120808A priority patent/TWI660306B/zh
Priority to CN201510515081.3A priority patent/CN105389122B/zh
Publication of KR20160022671A publication Critical patent/KR20160022671A/ko
Application granted granted Critical
Publication of KR102225313B1 publication Critical patent/KR102225313B1/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
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

Landscapes

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

Abstract

본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 부팅 동작을 오류 없이 빠르게 수행할 수 있는 데이터 저장 장치의 동작 방법에 관한 것이다. 상기 데이터 저장 장치의 동작 방법은, 부트 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계; 상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계; 그리고 상기 서브 부트 모드인 것으로 판단되는 경우 동작 메모리에 로딩된 서브 부트 코드를 실행한 이후에 상기 메인 부트 코드를 실행하는 단계를 포함한다.

Description

데이터 저장 장치의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 부팅 동작을 오류 없이 빠르게 수행할 수 있는 데이터 저장 장치의 동작 방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 데이터 저장 장치는 USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, UFS(Universal Flash Storage) 장치, 솔리드 스테이트 드라이브(Solid State Drive, 이하, SSD라 칭함)를 포함한다.
휴대용 전자 장치와 같은 호스트 장치의 다양한 요청에 응답하기 위해서, 그리고 데이터 저장 장치 내부의 관리 동작을 수행하기 위해서, 데이터 저장 장치는 운영 코드를 탑재하고 구동할 수 있다. 데이터 저장 장치는 전원이 공급되면 운영 코드를 동작 메모리 상에 로딩하고, 운영 코드를 구동할 수 있는 상태로 진입하기 위한 부팅 동작을 수행할 수 있다.
예시적으로, 데이터 저장 장치가 오동작(malfunction) 상태에 있을 때 데이터 저장 장치는 리셋될 수 있으며, 이러한 경우에 부팅 동작이 재차 수행될 수 있다. 다른 예로서, 데이터 저장 장치가 절전 모드로부터 정상 모드로 복귀하는 경우에 부팅 동작이 재차 수행될 수 있다. 어떠한 경우라도, 부팅 동작이 오류 없이 완료되어야만 데이터 저장 장치가 정상적으로 동작할 수 있다.
본 발명의 실시 예는 부팅 동작을 오류 없이 빠르게 수행할 수 있는 데이터 저장 장치의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 부트 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계; 상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계; 그리고 상기 서브 부트 모드인 것으로 판단되는 경우 동작 메모리에 로딩된 서브 부트 코드를 실행한 이후에 상기 메인 부트 코드를 실행하는 단계를 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 절전 모드로 진입하기 전에 절전 모드 레지스터를 셋팅하는 단계; 절전 모드에서 정상 모드로 복귀하는 경우 상기 절전 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계; 상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계; 그리고 상기 서브 부트 모드인 것으로 판단되는 경우 동작 메모리에 유지된 서브 부트 코드를 실행하는 단계를 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 부트 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계; 상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계; 상기 서브 부트 모드인 것으로 판단되는 경우 절전 모드 레지스터에 저장된 데이터에 근거하여 절전 모드로부터 복귀된 것인지 아닌지를 판단하는 단계; 상기 절전 모드로부터 복귀된 것이 아닌 것으로 판단되는 경우 동작 메모리에 저장된 제1 서브 부트 코드를 실행하는 단계; 그리고 상기 절전 모드로부터 복귀된 것으로 판단되는 경우 상기 동작 메모리에 저장된 제2 서브 부트 코드를 실행하는 단계를 포함한다.
본 발명의 실시 예에 따르면 데이터 저장 장치의 부팅 동작이 오류 없이 빠르게 수행될 수 있다. 그로 인해서 데이터 저장 장치의 신뢰성과 동작 속도가 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블럭도이다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 예시적으로 보여주는 순서도이다.
도 3 내지 도 5는 도 2에 도시된 순서도에 따라서 동작하는 데이터 장치의 동작을 설명하기 위한 도면들이다.
도 6은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 예시적으로 보여주는 순서도이다.
도 7 내지 도 10은 도 6에 도시된 순서도에 따라서 동작하는 데이터 저장 장치의 동작을 설명하기 위한 도면들이다.
도 11은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 예시적으로 보여주는 순서도이다.
도 12 내지 도 16은 도 11에 도시된 순서도에 따라서 동작하는 데이터 저장 장치의 동작을 설명하기 위한 도면들이다.
도 17은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다.
도 18은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이버(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다.
도 19는 도 18에 도시된 SSD 컨트롤러를 예시적으로 보여주는 블럭도이다.
도 20은 본 발명의 실시 예에 따른 데이터 저장 장치가 장착되는 컴퓨터 시스템을 예시적으로 보여주는 블럭도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, '연결되는/결합되는'이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 '포함한다' 또는 '포함하는'으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블럭도이다. 데이터 저장 장치(100)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(도시되지 않음)에 의해서 액세스되는 데이터를 저장할 수 있다. 데이터 저장 장치(100)는 메모리 시스템이라고도 불릴 수 있다.
데이터 저장 장치(100)는 호스트 장치와 연결되는 인터페이스 프로토콜에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 데이터 저장 장치(100)는 솔리드 스테이트 드라이브(solid state drive, SSD), MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multi media card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(100)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 데이터 저장 장치(100)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
데이터 저장 장치(100)는 불휘발성 메모리 장치(120)를 포함할 수 있다. 불휘발성 메모리 장치(120)는 데이터 저장 장치(100)의 저장 매체로서 동작할 수 있다. 불휘발성 메모리 장치(120)는 낸드(NAND) 플래시 메모리 장치, 노어(NOR) 플래시 메모리 장치, 강유전체 커패시터를 이용한 강유전체 램덤 액세스 메모리(ferroelectric random access memory: FRAM), 티엠알(tunneling magneto-resistive: TMR) 막을 이용한 마그네틱 랜덤 액세스 메모리(magnetic random access memory: MRAM), 칼코겐 화합물(chalcogenide alloys)을 이용한 상 변화 랜덤 액세스 메모리(phase change random access memory: PRAM), 전이 금속 산화물(transition metal oxide)을 이용한 저항성 랜덤 액세스 메모리(resistive random access memory: RERAM) 등과 같은 다양한 형태의 불휘발성 메모리 장치들 중 어느 하나로 구성될 수 있다. 불휘발성 메모리 장치(120)는 낸드 플래시 메모리 장치와 위에서 언급한 다양한 형태의 불휘발성 메모리 장치의 조합으로 구성될 수 있다.
데이터 저장 장치(100)는 컨트롤러(110)를 포함할 수 있다. 컨트롤러(110)는 컨트롤 유닛(111), 롬(read only memory, 114), 동작 메모리(working memory, 115) 및 메모리 인터페이스 유닛(116)을 포함할 수 있다. 컨트롤 유닛(111)은 부트 모드 레지스터(112) 및 절전 모드 레지스터(113)를 포함할 수 있다.
컨트롤 유닛(111)은 컨트롤러(110)의 제반 동작을 제어할 수 있다. 컨트롤 유닛(111)은 호스트 장치로부터 입력된 신호를 분석하고 처리할 수 있다. 이를 위해서, 컨트롤 유닛(111)은 동작 메모리(115)에 로딩된 운영 코드(operating code)를 해독하고 실행(또는 구동)할 수 있다. 운영 코드는 펌웨어 또는 소프트웨어라고 불릴 수 있다. 컨트롤 유닛(111)은 운영 코드를 실행할 수 있는 하드웨어 형태로 또는 하드웨어와 소프트웨어가 조합된 형태로 구현될 수 있다.
부트 모드 레지스터(112)는 컨트롤 유닛(111)에 의해서 수행되는 부팅 동작의 모드(이하, 부트 모드라 칭함)를 설정하는 데 사용될 수 있다. 절전 모드 레지스터(113)는 컨트롤 유닛(111)에 의해서 수행되는 부팅 모드를 설정하는 데 사용될 수 있다. 컨트롤 유닛(111)은 부트 모드 레지스터(112)와 절전 모드 레지스터(113)에 저장된 데이터에 근거하여 부트 모드를 변경할 수 있다. 부트 모드 레지스터(112)와 절전 모드 레지스터(113)에 저장된 데이터를 참조하는 컨트롤 유닛(111)의 부팅 동작은 이하 상세히 설명될 것이다.
롬(114)은 메인 부트 코드(main boot code)를 저장할 수 있다. 데이터 저장 장치에 전원이 공급되면 컨트롤 유닛(111)은 롬(114)에 저장된 메인 부트 코드를 독출하고, 독출된 메인 부트 코드에 근거하여 부팅 동작을 수행할 수 있다.
동작 메모리(115)는 컨트롤 유닛(111)의 작업 공간으로 사용될 수 있다. 동작 메모리(115)는 컨트롤 유닛(111)에 의해서 실행되는 운영 코드와, 그것의 실행에 필요한 저장할 수 있다. 동작 메모리(115)는 메모리 셀에 대한 랜덤 액세스가 가능한 메모리로 구성될 수 있다. 예시적으로, 동작 메모리(115)는 정적 랜덤 액세스 메모리(static random access memory: SRAM), 동적 랜덤 액세스 메모리(dynamic random access memory: DRAM) 등과 같은 휘발성 랜덤 액세스 메모리로 구성될 수 있다. 다른 예로서, 동작 메모리(115)는 강유전체 램덤 액세스 메모리(FRAM), 마그네틱 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM), 저항성 랜덤 액세스 메모리(RERAM) 등과 같은 불휘발성 랜덤 액세스 메모리로 구성될 수 있다.
메모리 인터페이스 유닛(116)은 컨트롤 유닛(111)의 제어에 따라서 불휘발성 메모리 장치(120)에 제어 신호(예를 들면, 커맨드, 어드레스, 동작 제어 신호)를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(116)은 불휘발성 메모리 장치(120)와 데이터를 주고 받을 수 있다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 예시적으로 보여주는 순서도이다. 그리고 도 3 내지 도 5는 도 2에 도시된 순서도에 따라서 동작하는 데이터 장치의 동작을 설명하기 위한 도면들이다. 도 2를 보다 구체적으로 설명하기 위해서 도 3 내지 도 5가 함께 참조될 것이다. 도 2를 설명함에 있어서, 부팅 동작이 완료되고 정상 모드로 동작하는 중에 오동작(malfunction)이 발생된, 그리고 오동작에 의해서 리셋되고 부팅 동작을 재차 수행하는 데이터 저장 장치(도 1의 100)가 가정될 것이다.
S110 단계에서, 컨트롤 유닛(111)은 전원이 공급되면 부트 모드 레지스터(112)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 3의 절차 <1>). 전원이 공급된 직후이기 때문에, 부트 모드 레지스터(112)는 초기화된 상태일 것이다. 즉, 전원이 공급된 직후에 부트 모드 레지스터(112)에는 리셋 데이터가 저장될 수 있다. 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 리셋 데이터가 저장된 경우, 메인 부트 모드인 것으로 판단할 수 있다.
컨트롤 유닛(111)은 메인 부트 모드인 것으로 판단하면 메인 부트 코드(MBC)를 실행하는 절차(S120 단계)를 수행할 수 있다. S121 단계에서, 컨트롤 유닛(111)은 롬(114)에 저장된 메인 부트 코드(MBC)를 독출할 수 있다(도 3의 절차 <2>). S122 단계에서, 컨트롤 유닛(111)은 메인 부트 코드(MBC)의 실행을 통해서, 불휘발성 메모리 장치(120)에 저장된 운영 코드(OC)를 동작 메모리(115)로 로딩할 수 있다(도 3의 절차 <3>).
예시적으로, 메인 부트 코드(MBC)는 운영 코드(OC)가 저장된 불휘발성 메모리 장치(120)의 위치 정보, 불휘발성 메모리 장치(120)로부터 운영 코드(OC)를 독출하기 위해서 필요한 불휘발성 메모리 장치(120)에 관련된 정보, 운영 코드(OC)를 독출하기 위한 실행 코드 등을 포함할 수 있다.
S130 단계에서, 컨트롤 유닛(111)은 일회성 운영 코드(one-shot operating code)(이하, 일회성 코드(one-shot code, OSC)라 칭함)를 실행하고, 실행된 일회성 코드(OSC)를 동작 메모리(115)로부터 언로딩(unloading)할 수 있다(도 4의 절차 <4>).
예시적으로, 일회성 코드(OSC)는 컨트롤러(110)의 내부 기능 블럭들을 초기화하는 코드, 비정상적인 종료 상태(예를 들면, 갑작스런 전원 중단(sudden power off) 상태)로부터 복귀되었을 때 발생되는 문제들을 해결하기 위한 코드 등을 포함할 수 있다. 이와 같이, 일회성 코드(OSC)는 데이터 저장 장치(100)가 부팅 동작이 완료되어 정상 모드로 진입하기 전까지 1회에 한하여 수행되는 운영 코드(OC)의 일부분을 의미한다. 따라서, 일회성 코드(OSC)는 실행된 이후에, 동작 메모리(115)의 효율적 이용을 위해서 언로딩될 수 있다.
S140 단계에서, 컨트롤 유닛(111)은 부트 모드 레지스터(112)를 셋팅할 수 있다(도 4의 절차 <5>). 즉, 컨트롤 유닛(111)은 이후 발생되는 부팅 동작(예를 들면, 파워 온 동작에 의해서 수행되는 부팅 동작을 제외한 나머지 부팅 동작)이 서브 부트 모드로 수행되도록 부트 모드 레지스터(112)에 셋 데이터를 저장할 수 있다.
S150 단계에서, 컨트롤 유닛(111)은 불휘발성 메모리 장치(120)에 저장된 서브 부트 코드(SBC)를 동작 메모리(115)로 로딩할 수 있다(도 4의 절차 <6>). 서브 부트 코드(SBC)는 전원이 차단될 때까지 데이터를 유지할 수 있는 동작 메모리(115)의 특정 영역에 로딩될 수 있다.
예시적으로, 서브 부트 코드(SBC)는 불휘발성 메모리 장치(120)를 초기화하는 코드를 포함할 수 있다. 불휘발성 메모리 장치(120)를 초기화하는 코드는 불휘발성 메모리 장치(120)의 내부 동작에 사용되는 바이어스 조건을 초기화하는 코드를 포함할 수 있다.
도 2에 있어서, 일회성 코드를 실행하는 단계(S130 단계), 부트 모드 레지스터를 셋팅하는 단계(S140 단계) 및 서브 부트 코드를 로딩하는 단계(S150 단계)가 구분되어 수행되는 것으로 설명되었다. 하지만, 부터 모드 레지스터를 셋팅하는 단계(S140 단계)와 서브 부트 코드를 로딩하는 단계(S150 단계)는 일회성 코드를 실행하는 단계(S130 단계)에 포함될 수 있고, 일회성 코드를 실행하는 단계(S130 단계)가 수행되는 동안 수행될 수 있다.
S160 단계에서, 컨트롤 유닛(111)은 연속성 운영 코드(continuity operating code)(이하, 연속성 코드(continuity code, CC)라 칭함)를 실행할 수 있다(도 4의 절차 <7>). 예시적으로, 연속성 코드(CC)는 데이터 저장 장치(100)의 부팅 동작을 수행하기 위한 코드를 포함할 수 있다. 또한, 연속성 코드(CC)는 호스트 장치의 요청을 처리할 수 있는 코드를 포함할 수 있다. 이와 같이, 연속성 코드(CC)는 데이터 저장 장치(100)가 부팅 동작이 완료되어 정상 모드로 진입하여도 계속적으로 수행되는 운영 코드(OC)의 일부분을 의미한다.
컨트롤 유닛(111)은 연속성 코드(CC)의 실행을 통해서, 부팅 동작을 완료하고 정상 모드로 진입할 수 있다. 컨트롤 유닛(111)은 정상 모드로 동작하는 동안 호스트 장치의 요청을 처리할 수 있다. 예를 들면, 컨트롤 유닛(111)은 호스트 장치로부터 제공된 사용자 데이터(DT)를 불휘발성 메모리 장치(120)에 저장하거나, 불휘발성 메모리 장치(120)로부터 독출된 사용자 데이터(DT)를 호스트 장치로 제공할 수 있다. 또한, 컨트롤 유닛(111)은 정상 모드로 동작하는 동안 데이터 저장 장치(100)를 관리하기 위한 내부 동작을 수행할 수 있다.
다양한 이유로 인해서, 호스트 장치는 데이터 저장 장치(100)를 초기화, 즉, 리셋시킬 수 있다. 호스트 장치는 소프트웨어적으로 리셋을 요청할 수 있다. 호스트 장치는 소프트웨어적으로 요청된 리셋이 수행되지 않거나 비정상적으로 수행되면, 데이터 저장 장치(100)가 즉각 리셋되도록 또는 정상적으로 리셋되도록 하드웨어적으로 리셋을 요청할 수 있다. 호스트 장치는 데이터 저장 장치(100)와 연결된 신호 라인을 통해서 하드웨어 리셋 신호를 제공함으로써 하드웨어 리셋을 요청할 수 있다.
S170 단계에서, 컨트롤 유닛(111)은 호스트 장치로부터 하드웨어 리셋이 요청되었는지를 판단할 수 있다. 하드웨어 리셋이 요청되지 않은 경우, 컨트롤 유닛(111)은 연속성 코드(CC)의 계속적인 실행을 통해서, 파워 오프 요청이 있을 때까지 정상 모드로 동작할 수 있다(S180 단계). 하드웨어 리셋이 요청된 경우, 컨트롤 유닛(111)은 부팅 동작을 다시 수행할 수 있다.
하드웨어 리셋 요청에 의해서 부팅 동작이 다시 수행되면, 절차는 S110 단계로 진행될 수 있다. S110 단계에서, 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 5의 절차 <8>). S140 단계가 수행된 이후이기 때문에, 부트 모드 레지스터(112)에는 셋 데이터가 저장된 상태일 것이다. 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 셋 데이터가 저장된 경우, 서브 부트 모드인 것으로 판단하고, S190 단계를 수행할 수 있다.
S190 단계에서, 컨트롤 유닛(111)은 동작 메모리(115)에 로딩된 서브 부트 코드(SBC)를 실행할 수 있다(도 5의 절차 <9>). 앞서 설명된 바와 같이, 서브 부트 코드(SBC)는 불휘발성 메모리 장치(120)를 초기화하는 코드를 포함할 수 있다. 따라서, 컨트롤 유닛(111)은 서브 부트 코드(SBC)의 실행을 통해서 불휘발성 메모리 장치(120)를 초기화할 수 있다(도 5의 절차 <10>).
하드웨어 리셋 요청에 의해서 서브 부트 코드(SBC)가 메인 부트 코드(MBC)보다 먼저 실행되면, 데이터 저장 장치(100)의 오동작으로 인해서 불휘발성 메모리 장치(120)로부터 메인 부트 코드(MBC)가 정상적으로 독출되지 못하는 문제가 해결될 수 있다. 메인 부트 코드(MBC)가 정상적으로 로딩될 수 있도록 수행되는 코드라는 점에서, 서브 부트 코드(SBC)는 메인 부트 코드(MBC)를 보조하는 코드가 아님을 알 수 있을 것이다. 즉, 서브 부트 코드(SBC)는 메인 부트 코드(MBC)의 실행에 필요한 정보를 부가하기 위한 코드가 아닐 것이다.
서브 부트 코드(SBC)가 실행된 이후에, 절차는 앞서 설명된 S121 단계부터 S180 단계까지 순차적으로 진행될 수 있다. 즉, 컨트롤 유닛(111)은 롬(114)에 저장된 메인 부트 코드(MBC)를 독출하고(도 5의 절차 <11>), 운영 코드(OC)를 동작 메모리(115)에 다시 로딩하고(도 5의 절차 <12>), 다시 로딩된 운영 코드(OC)를 실행할 수 있다(도 5의 절차 <13>). 여기에서, 운영 코드(OC)가 동작 메모리(115)에 다시 로딩되는 동작은 갱신(update) 또는 덮어쓰기(overwrite)를 의미할 수 있다.
도 6은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 예시적으로 보여주는 순서도이다. 그리고 도 7 내지 도 10은 도 6에 도시된 순서도에 따라서 동작하는 데이터 저장 장치의 동작을 설명하기 위한 도면들이다. 도 2를 보다 구체적으로 설명하기 위해서 도 7 내지 도 10이 함께 참조될 것이다. 도 6을 설명함에 있어서, 부팅 동작이 완료되고 정상 모드로 동작하는 중에 절전 모드로 진입한, 그리고 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위해서 부팅 동작을 재차 수행하는 데이터 저장 장치(도 1의 100)가 가정될 것이다.
S210 단계에서, 컨트롤 유닛(111)은 전원이 공급되면 절전 모드 레지스터(113)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 7의 절차 <1>). 전원이 공급된 직후이기 때문에, 절전 모드 레지스터(113)는 초기화된 상태일 것이다. 즉, 전원이 공급된 직후에 절전 모드 레지스터(113)는 리셋 데이터가 저장될 수 있다. 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 리셋 데이터가 저장된 경우, 메인 부트 모드인 것으로 판단할 수 있다.
컨트롤 유닛(111)은 메인 부트 모드인 것으로 판단하면 메인 부트 코드(MBC)를 실행하는 절차(S220 단계)를 수행할 수 있다. S221 단계에서, 컨트롤 유닛(111)은 롬(114)에 저장된 메인 부트 코드(MBC)를 독출할 수 있다(도 7의 절차 <2>). S222 단계에서, 컨트롤 유닛(111)은 메인 부트 코드(MBC)의 실행을 통해서, 불휘발성 메모리 장치(120)에 저장된 운영 코드(OC)를 동작 메모리(115)로 로딩할 수 있다(도 7의 절차 <3>).
예시적으로, 메인 부트 코드(MBC)는 운영 코드(OC)가 저장된 불휘발성 메모리 장치(120)의 위치 정보, 불휘발성 메모리 장치(120)로부터 운영 코드(OC)를 독출하기 위해서 필요한 불휘발성 메모리 장치(120)에 관련된 정보 등을 포함할 수 있다.
S230 단계에서, 컨트롤 유닛(111)은 일회성 운영 코드(OSC)(이하, 일회성 코드(OSC)라 칭함)를 실행하고, 실행된 일회성 코드(OSC)를 동작 메모리(115)로부터 언로딩(unloading)할 수 있다(도 8의 절차 <4>).
예시적으로, 일회성 코드(OSC)는 컨트롤러(110)의 내부 기능 블럭들을 초기화하는 코드, 비정상적인 종료 상태(예를 들면, 갑작스런 전원 중단(sudden power off) 상태)로부터 복귀되었을 때 발생되는 문제들을 해결하기 위한 코드 등을 포함할 수 있다. 이와 같이, 일회성 코드(OSC)는 데이터 저장 장치(100)가 부팅 동작이 완료되어 정상 모드로 진입하기 전까지 1회에 한하여 수행되는 일부 운영 코드(OC)를 의미한다. 따라서, 일회성 코드(OSC)는 실행된 이후에, 동작 메모리(115)의 효율적 이용을 위해서 언로딩될 수 있다.
S240 단계에서, 컨트롤 유닛(111)은 불휘발성 메모리 장치(120)에 저장된 서브 부트 코드(SBC)를 동작 메모리(115)로 로딩할 수 있다(도 8의 절차 <5>). 서브 부트 코드(SBC)는 전원이 차단될 때까지 데이터를 유지할 수 있는 동작 메모리(115)의 특정 영역에 로딩될 수 있다.
예시적으로, 서브 부트 코드(SBC)는 운영 코드(OC)의 연속성 코드(CC)가 저장된 불휘발성 메모리 장치(120)의 위치 정보, 연속성 코드(CC)를 독출하기 위한 실행 코드를 포함할 수 있다.
도 6에 있어서, 일회성 코드를 실행하는 단계(S230 단계)와 서브 부트 코드를 로딩하는 단계(S240 단계)가 구분되어 수행되는 것으로 설명되었다. 하지만, 서브 부트 코드를 로딩하는 단계(S240 단계)는 일회성 코드를 실행하는 단계(S230 단계)에 포함될 수 있고, 일회성 코드를 실행하는 단계(S230 단계)가 수행되는 동안 수행될 수 있다.
S250 단계에서, 컨트롤 유닛(111)은 연속성 운영 코드(CC)(이하, 연속성 코드(CC)라 칭함)를 실행할 수 있다(도 8의 절차 <6>). 예시적으로, 연속성 코드(CC)는 데이터 저장 장치(100)의 부팅 동작을 수행하기 위한 코드를 포함할 수 있다. 또한, 연속성 코드(CC)는 호스트 장치의 요청을 처리할 수 있는 코드를 포함할 수 있다.
컨트롤 유닛(111)은 연속성 코드(CC)의 실행을 통해서, 부팅 동작을 완료하고 정상 모드로 진입할 수 있다. 컨트롤 유닛(111)은 정상 모드로 동작하는 동안 호스트 장치의 요청을 처리할 수 있다. 예를 들면, 컨트롤 유닛(111)은 호스트 장치로부터 제공된 사용자 데이터(DT)를 불휘발성 메모리 장치(120)에 저장하거나, 불휘발성 메모리 장치(120)로부터 독출된 사용자 데이터(DT)를 호스트 장치로 제공할 수 있다. 또한, 컨트롤 유닛(111)은 정상 모드로 동작하는 동안 데이터 저장 장치(100)를 관리하기 위한 내부 동작을 수행할 수 있다.
전력 소모를 줄이기 위해서, 호스트 장치는 데이터 저장 장치(100)를 절전 모드로 진입시킬 수 있다. 호스트 장치는 소프트웨어적 또는 하드웨어적으로 절전 모드로의 진입을 요청할 수 있다.
S260 단계에서, 컨트롤 유닛(111)은 호스트 장치로부터 절전 모드가 요청되었는지를 판단할 수 있다. 절전 모드가 요청되지 않은 경우, 컨트롤 유닛(111)은 연속성 코드(CC)의 계속적인 실행을 통해서, 파워 오프 요청이 있을 때까지 정상 모드로 동작할 수 있다(S270 단계). 절전 모드가 요청된 경우, 컨트롤 유닛(111)은 절전 모드로 동작할 수 있다(S280 단계).
S281 단계에서, 컨트롤 유닛(111)은 절전 모드 레지스터(113)를 셋팅할 수 있다(도 9의 절차 <7>). 즉, 컨트롤 유닛(111)은 이후 발생되는 부팅 동작(예를 들면, 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위해서 수행되는 부팅 동작)이 서브 부트 모드로 수행되도록 절전 모드 레지스터(113)에 셋 데이터를 저장할 수 있다.
S282 단계에서, 컨트롤 유닛(111)은 절전 모드로 진입하기 위한 준비 작업을 수행하고, 절전 모드로 진입할 수 있다. 예시적으로, 컨트롤 유닛(111)은 수행 중이던 작업을 모두 종료할 수 있다. 또한, 컨트롤 유닛(111)은 동작 메모리(115)에 저장된 각종 데이터를 불휘발성 메모리 장치(120)에 백업하고, 동작 메모리(115)를 비롯한 내부 기능 블럭들 그리고 불휘발성 메모리 장치(120)에 공급되는 전원을 차단할 수 있다. 서브 부트 코드(SBC)가 저장된 특정 영역을 제외한 나머지 영역에만 전원 공급이 차단될 수 있기 때문에, 서브 부트 코드(SBC)는 동작 메모리(115)에 유지될 수 있다(도 9의 절차 <8>).
S283 단계에서, 컨트롤 유닛(111)은 호스트 장치로부터 웨이크-업이 요청되었는지를 판단할 수 있다. 웨이크-업이 요청되지 않은 경우, 컨트롤 유닛(111)은 웨이크-업 요청이 있을 때까지 절전 모드로 동작할 수 있다. 웨이크-업이 요청된 경우, 컨트롤 유닛(111)은 부팅 동작을 다시 수행할 수 있다.
웨이크-업 요청에 의해서 부팅 동작이 다시 수행되면, 절차는 S210 단계로 진행될 수 있다. S210 단계에서, 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 10의 절차 <9>). S281 단계가 수행된 이후이기 때문에, 절전 모드 레지스터(113)에는 셋 데이터가 저장된 상태일 것이다. 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 셋 데이터가 저장된 경우, 서브 부트 모드인 것으로 판단하고, S290 단계를 수행할 수 있다.
S290 단계에서, 컨트롤 유닛(111)은 동작 메모리(115)에 로딩된 서브 부트 코드(SBC)를 실행할 수 있다(도 10의 절차 <10>). 앞서 설명된 바와 같이, 서브 부트 코드(SBC)는 연속성 코드(CC)를 독출하기 위한 실행 코드를 포함할 수 있다. 따라서, 컨트롤 유닛(111)은 서브 부트 코드(SBC)의 실행을 통해서 불휘발성 메모리 장치(120)에 저장된 연속성 코드(CC)만을 동작 메모리(115)로 로딩할 수 있다(도 10의 절차 <11>).
웨이크-업 요청에 의해서 부팅 동작이 다시 수행되는 경우 메인 부트 코드(MBC) 대신 서브 부트 코드(SBC)가 실행되면, 연속성 코드(CC)만을 로딩하고 로딩된 연속성 코드(CC)를 바로 실행할 수 있기 때문에 데이터 저장 장치(100)의 부팅 동작이 빨라질 수 있다.
서브 부트 코드(SBC)가 실행된 이후에, 절차는 앞서 설명된 S250 단계부터 순차적으로 진행될 수 있다. 즉, 컨트롤 유닛(111)은 연속성 코드(CC)의 실행을 통해서, 절전 모드로부터 깨어나서 정상 모드로 복귀할 수 있다(도 10의 절차 <12>).
도 11은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 예시적으로 보여주는 순서도이다. 그리고 도 12 내지 도 16은 도 11에 도시된 순서도에 따라서 동작하는 데이터 저장 장치의 동작을 설명하기 위한 도면들이다. 도 11을 보다 구체적으로 설명하기 위해서 도 12 내지 도 16이 함께 참조될 것이다. 도 11을 설명함에 있어서, 부팅 동작이 완료되고 정상 모드로 동작하는 중에 오동작(malfunction)이 발생된, 그리고 오동작에 의해서 리셋되고 부팅 동작을 재차 수행하는 데이터 저장 장치(도 1의 100)와, 정상 모드로 동작하는 중에 절전 모드로 진입한, 그리고 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위해서 부팅 동작을 재차 수행하는 데이터 저장 장치(도 1의 100)가 가정될 것이다.
S305 단계에서, 컨트롤 유닛(111)은 전원이 공급되면 부트 모드 레지스터(112)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 12의 절차 <1>). 전원이 공급된 직후이기 때문에, 부트 모드 레지스터(112)는 초기화된 상태일 것이다. 즉, 전원이 공급된 직후에 부트 모드 레지스터(112)에는 리셋 데이터가 저장될 수 있다. 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 리셋 데이터가 저장된 경우, 메인 부트 모드인 것으로 판단할 수 있다.
컨트롤 유닛(111)은 메인 부트 모드인 것으로 판단하면 메인 부트 코드(MBC)를 실행하는 절차(S320 단계)를 수행할 수 있다. S321 단계에서, 컨트롤 유닛(111)은 롬(114)에 저장된 메인 부트 코드(MBC)를 독출할 수 있다(도 12의 절차 <2>). S322 단계에서, 컨트롤 유닛(111)은 메인 부트 코드(MBC)의 실행을 통해서, 불휘발성 메모리 장치(120)에 저장된 운영 코드(OC)를 동작 메모리(115)로 로딩할 수 있다(도 12의 절차 <3>).
예시적으로, 메인 부트 코드(MBC)는 운영 코드(OC)가 저장된 불휘발성 메모리 장치(120)의 위치 정보, 불휘발성 메모리 장치(120)로부터 운영 코드(OC)를 독출하기 위해서 필요한 불휘발성 메모리 장치(120)에 관련된 정보, 운영 코드(OC)를 독출하기 위한 실행 코드 등을 포함할 수 있다.
S330 단계에서, 컨트롤 유닛(111)은 운영 코드(OC)의 일회성 코드(one-shot code, OSC)를 실행하고, 실행된 일회성 코드(OSC)를 동작 메모리(115)로부터 언로딩(unloading)할 수 있다(도 13의 절차 <4>).
예시적으로, 일회성 코드(OSC)는 컨트롤러(110)의 내부 기능 블럭들을 초기화하는 코드, 비정상적인 종료 상태(예를 들면, 갑작스런 전원 중단(sudden power off) 상태)로부터 복귀되었을 때 발생되는 문제들을 해결하기 위한 코드 등을 포함할 수 있다. 이와 같이, 일회성 코드(OSC)는 데이터 저장 장치(100)가 부팅 동작이 완료되어 정상 모드로 진입하기 전까지 1회에 한하여 수행되는 일부 운영 코드(OC)를 의미한다. 따라서, 일회성 코드(OSC)는 실행된 이후에, 동작 메모리(115)의 효율적 이용을 위해서 언로딩될 수 있다.
S335 단계에서, 컨트롤 유닛(111)은 부트 모드 레지스터(112)를 셋팅할 수 있다(도 13의 절차 <5>). 즉, 컨트롤 유닛(111)은 이후 발생되는 부팅 동작(예를 들면, 파워 온 동작에 의해서 수행되는 부팅 동작을 제외한 나머지 부팅 동작)이 서브 부트 모드로 수행되도록 부트 모드 레지스터(112)에 셋 데이터를 저장할 수 있다.
S340 단계에서, 컨트롤 유닛(111)은 불휘발성 메모리 장치(120)에 저장된 제1 서브 부트 코드(SBC1)와 제2 서브 부트 코드(SBC2)를 동작 메모리(115)로 로딩할 수 있다(도 13의 절차 <6>). 제1 서브 부트 코드(SBC1)와 제2 서브 부트 코드(SBC2)는 전원이 차단될 때까지 데이터를 유지할 수 있는 동작 메모리(115)의 특정 영역에 로딩될 수 있다.
예시적으로, 제1 서브 부트 코드(SBC1)는 불휘발성 메모리 장치(120)를 초기화하는 코드를 포함할 수 있다. 불휘발성 메모리 장치(120)를 초기화하는 코드는 불휘발성 메모리 장치(120)의 내부 동작에 사용되는 바이어스 조건을 초기화하는 코드를 포함할 수 있다. 제2 서브 부트 코드(SBC2)는 운영 코드(OC)의 연속성 코드(CC)가 저장된 불휘발성 메모리 장치(120)의 위치 정보, 연속성 코드(CC)를 독출하기 위한 실행 코드를 포함할 수 있다.
도 11에 있어서, 일회성 코드를 실행하는 단계(S330 단계), 부트 모드 레지스터를 셋팅하는 단계(S335 단계) 및 제1 및 제2 서브 부트 코드를 로딩하는 단계(S340 단계)가 구분되어 수행되는 것으로 설명되었다. 하지만, 부터 모드 레지스터를 셋팅하는 단계(S335 단계)와 제1 및 제2 서브 부트 코드를 로딩하는 단계(S340 단계)는 일회성 코드를 실행하는 단계(S330 단계)에 포함될 수 있고, 일회성 코드를 실행하는 단계(S330 단계)가 수행되는 동안 수행될 수 있다.
S345 단계에서, 컨트롤 유닛(111)은 운영 코드(OC)의 연속성 코드(continuity code, CC)를 실행할 수 있다(도 13의 절차 <7>). 예시적으로, 연속성 코드(CC)는 데이터 저장 장치(100)의 부팅 동작을 수행하기 위한 코드를 포함할 수 있다. 또한, 연속성 코드(CC)는 호스트 장치의 요청을 처리할 수 있는 코드를 포함할 수 있다.
컨트롤 유닛(111)은 연속성 코드(CC)의 실행을 통해서, 부팅 동작을 완료하고 정상 모드로 진입할 수 있다. 컨트롤 유닛(111)은 정상 모드로 동작하는 동안 호스트 장치의 요청을 처리할 수 있다. 예를 들면, 컨트롤 유닛(111)은 호스트 장치로부터 제공된 사용자 데이터(DT)를 불휘발성 메모리 장치(120)에 저장하거나, 불휘발성 메모리 장치(120)로부터 독출된 사용자 데이터(DT)를 호스트 장치로 제공할 수 있다. 또한, 컨트롤 유닛(111)은 정상 모드로 동작하는 동안 데이터 저장 장치(100)를 관리하기 위한 내부 동작을 수행할 수 있다.
다양한 이유로 인해서, 호스트 장치는 데이터 저장 장치(100)를 초기화, 즉, 리셋시킬 수 있다. 호스트 장치는 소프트웨어적으로 리셋을 요청할 수 있다. 호스트 장치는 소프트웨어적으로 요청된 리셋이 수행되지 않거나 비정상적으로 수행되면, 데이터 저장 장치(100)가 즉각 리셋되도록 또는 정상적으로 리셋되도록 하드웨어적으로 리셋을 요청할 수 있다. 호스트 장치는 데이터 저장 장치(100)와 연결된 신호 라인을 통해서 하드웨어 리셋 신호를 제공함으로써 하드웨어 리셋을 요청할 수 있다.
S350 단계에서, 컨트롤 유닛(111)은 호스트 장치로부터 하드웨어 리셋이 요청되었는지를 판단할 수 있다. 하드웨어 리셋이 요청되었는지의 여부에 따라서 컨트롤 유닛(111)의 동작은 달라질 수 있다.
하드웨어 리셋 요청에 의해서 부팅 동작이 다시 수행되면, 절차는 S305 단계로 진행될 수 있다. S305 단계에서, 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 14의 절차 <8>). S335 단계가 수행된 이후이기 때문에, 부트 모드 레지스터(112)에는 셋 데이터가 저장된 상태일 것이다. 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 셋 데이터가 저장된 경우, 서브 부트 모드인 것으로 판단하고 S310 단계를 수행할 수 있다.
S310 단계에서, 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 저장된 데이터에 근거하여 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위한 서브 부트 모드인지의 여부를 판단할 수 있다(도 14의 절차 <8>). 절전 모드 레지스터(113)는 최기화된 상태로 유지되어있기 때문에, 절전 모드 레지스터(113)에는 리셋 데이터가 저장될 수 있다. 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 리셋 데이터가 저장된 경우, 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위한 서브 부트 모드가 아닌 것으로 판단할 수 있다.
S315 단계에서, 컨트롤 유닛(111)은 동작 메모리(115)에 로딩된 제1 서브 부트 코드(SBC1)를 실행할 수 있다(도 14의 절차 <9>). 앞서 설명된 바와 같이, 제1 서브 부트 코드(SBC1)는 불휘발성 메모리 장치(120)를 초기화하는 코드를 포함할 수 있다. 따라서, 컨트롤 유닛(111)은 제1 서브 부트 코드(SBC1)의 실행을 통해서 불휘발성 메모리 장치(120)를 초기화할 수 있다(도 14의 절차 <10>).
하드웨어 리셋 요청에 의해서 제1 서브 부트 코드(SBC1)가 메인 부트 코드(MBC)보다 먼저 실행되면, 데이터 저장 장치(100)의 오동작으로 인해서 불휘발성 메모리 장치(120)로부터 메인 부트 코드(MBC)가 정상적으로 독출되지 못하는 문제가 해결될 수 있다.
컨트롤 유닛(111)은 제1 서브 부트 코드(SBC1)가 실행된 이후에 메인 부트 코드(MBC)와 운영 코드(OC)의 실행을 통해서 정상 모드로 복귀할 수 있다(도 14의 절차 <11>~<13>).
하드웨어 리셋이 요청되지 않은 경우, 절차는 S355 단계로 진행될 수 있다. S355 단계에서, 컨트롤 유닛(111)은 호스트 장치로부터 절전 모드가 요청되었는지를 판단할 수 있다. 절전 모드가 요청되지 않은 경우, 컨트롤 유닛(111)은 연속성 코드(CC)의 계속적인 실행을 통해서, 파워 오프 요청이 있을 때까지 정상 모드로 동작할 수 있다(S360 단계). 절전 모드가 요청된 경우, 컨트롤 유닛(111)은 절전 모드로 동작할 수 있다(S370 단계).
S371 단계에서, 컨트롤 유닛(111)은 절전 모드 레지스터(113)를 셋팅할 수 있다(도 15의 절차 <14>). 즉, 컨트롤 유닛(111)은 이후 발생되는 부팅 동작(예를 들면, 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위해서 수행되는 부팅 동작)이 서브 부트 모드로 수행되도록 절전 모드 레지스터(113)에 셋 데이터를 저장할 수 있다.
S372 단계에서, 컨트롤 유닛(111)은 절전 모드로 진입하기 위한 준비 작업을수행하고, 절전 모드로 진입할 수 있다. 예시적으로, 컨트롤 유닛(111)은 수행 중이던 작업을 모두 종료할 수 있다. 또한, 컨트롤 유닛(111)은 동작 메모리(115)에 저장된 각종 데이터를 불휘발성 메모리 장치(120)에 백업하고, 동작 메모리(115)를 비롯한 내부 기능 블럭들 그리고 불휘발성 메모리 장치(120)에 공급되는 전원을 차단할 수 있다. 서브 부트 코드(SBC)가 저장된 특정 영역을 제외한 나머지 영역에만전원 공급이 차단될 수 있기 때문에, 서브 부트 코드(SBC)는 동작 메모리(115)에 유지될 수 있다(도 15의 절차 <15>).
S373 단계에서, 컨트롤 유닛(111)은 호스트 장치로부터 웨이크-업이 요청되었는지를 판단할 수 있다. 웨이크-업이 요청되지 않은 경우, 컨트롤 유닛(111)은 웨이크-업 요청이 있을 때까지 절전 모드로 동작할 수 있다. 웨이크-업이 요청된 경우, 컨트롤 유닛(111)은 부팅 동작을 다시 수행할 수 있다.
웨이크-업 요청에 의해서 부팅 동작이 다시 수행되면, 절차는 S305 단계로 진행될 수 있다. S305 단계에서, 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 저장된 데이터에 근거하여 메인 부트 모드인지의 여부를 판단할 수 있다(도 16의 절차 <16>). S335 단계가 수행된 이후이기 때문에, 부트 모드 레지스터(112)에는 셋 데이터가 저장된 상태일 것이다. 컨트롤 유닛(111)은 부트 모드 레지스터(112)에 셋 데이터가 저장된 경우, 서브 부트 모드인 것으로 판단하고 S310 단계를 수행할 수 있다.
S310 단계에서, 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 저장된 데이터에 근거하여 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위한 서브 부트 모드인지의 여부를 판단할 수 있다(도 16의 절차 <16>). S371 단계가 수행된 이후이기 때문에, 절전 모드 레지스터(113)에는 셋 데이터가 저장된 상태일 것이다. 컨트롤 유닛(111)은 절전 모드 레지스터(113)에 셋 데이터가 저장된 경우, 절전 모드로부터 깨어나서 정상 모드로 복귀하기 위한 서브 부트 모드인 것으로 판단하고 S380 단계를 수행할 수 있다.
S380 단계에서, 컨트롤 유닛(111)은 동작 메모리(115)에 로딩된 제2 서브 부트 코드(SBC2)를 실행할 수 있다(도 16의 절차 <17>). 앞서 설명된 바와 같이, 제2 서브 부트 코드(SBC2)는 연속성 코드(CC)를 독출하기 위한 실행 코드를 포함할 수 있다. 따라서, 컨트롤 유닛(111)은 제2 서브 부트 코드(SBC2)의 실행을 통해서 불휘발성 메모리 장치(120)에 저장된 연속성 코드(CC)만을 동작 메모리(115)로 로딩할 수 있다(도 16의 절차 <18>).
제2 서브 부트 코드(SBC2)가 실행된 이후에, 절차는 앞서 설명된 S345 단계부터 순차적으로 진행될 수 있다. 즉, 컨트롤 유닛(111)은 연속성 코드(CC)의 실행을 통해서, 절전 모드로부터 깨어나서 정상 모드로 복귀할 수 있다(도 16의 절차 <19>).
도 17은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다. 도 17을 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100)와 데이터 저장 장치(1200)를 포함할 수 있다.
데이터 저장 장치(1200)는 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함할 수 있다. 데이터 저장 장치(1200)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(1100)에 접속되어 사용될 수 있다.
컨트롤러(1210)는 호스트 장치(1100)로부터의 요청에 응답하여 불휘발성 메모리 장치(1220)를 액세스하도록 구성될 수 있다. 예를 들면, 컨트롤러(1210)는 불휘발성 메모리 장치(1220)의 읽기, 프로그램 또는 소거 동작을 제어하도록 구성될 수 있다. 컨트롤러(1210)는 불휘발성 메모리 장치(1220)를 제어하기 위한 펌웨어 또는 소프트웨어를 구동하도록 구성될 수 있다.
컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 메모리 인터페이스 유닛(1213), 램(1214), 에러 정정 코드(ECC) 유닛(1215) 및 롬(1216)을 포함할 수 있다.
컨트롤 유닛(1212)은 호스트 장치의 요청에 응답하여 컨트롤러(1210)의 제반 동작을 제어하도록 구성될 수 있다. 컨트롤 유닛(1212)은 메인 부트 모드인지 서브 부트 모드인지를 판단할 수 있다. 컨트롤 유닛(1212)은 판단 결과에 근거하여 롬(1216)에 저장된 메인 부트 코드의 실행을 통해서 메인 부트 모드로 동작하거나 서브 부트 모드를 수행할 수 있다.
램(1214)은 컨트롤 유닛(1212)의 동작 메모리로서 이용될 수 있다. 램(1214)은 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터 또는 호스트 장치(1100)로부터 제공된 데이터를 임시로 저장하는 버퍼 메모리로서 이용될 수 있다.
호스트 인터페이스 유닛(1211)은 호스트 장치(1100)와 컨트롤러(1210)를 인터페이싱하도록 구성될 수 있다. 예를 들면, 호스트 인터페이스 유닛(1211)은 USB(Universal Serial Bus) 프로토콜, UFS(Universal Flash Storage) 프로토콜, MMC(Multimedia Card) 프로토콜, PCI(Peripheral Component Interconnection) 프로토콜, PCI-E(PCI-Express) 프로토콜, PATA(Parallel Advanced Technology Attachment) 프로토콜, SATA(Serial ATA) 프로토콜, SCSI(Small Computer System Interface) 프로토콜, 그리고 SAS(Serial Attached SCSI) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트 장치(1100)와 통신하도록 구성될 수 있다.
메모리 인터페이스 유닛(1213)은 컨트롤러(1210)와 불휘발성 메모리 장치(1220)를 인터페이싱하도록 구성될 수 있다. 메모리 인터페이스 유닛(1213)은 불휘발성 메모리 장치(1220)에 커맨드 및 어드레스를 제공하도록 구성될 수 있다. 그리고 메모리 인터페이스 유닛(1213)은 불휘발성 메모리 장치(1220)와 데이터를 주고 받도록 구성될 수 있다.
에러 정정 코드 유닛(1215)은 불휘발성 메모리 장치(1220)로부터 독출된 데이터의 에러를 검출하도록 구성될 수 있다. 그리고 에러 정정 코드 유닛(1215)은 검출된 에러가 정정 범위 내이면, 검출된 에러를 정정하도록 구성될 수 있다.
불휘발성 메모리 장치(1220)는 데이터 저장 장치(1200)의 저장 매체로 사용될 수 있다. 불휘발성 메모리 장치(1220)는 복수의 불휘발성 메모리 칩들(또는 다이들(dies))(NVM_1~NVM_k)을 포함할 수 있다.
컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 다양한 데이터 저장 장치 중 어느 하나로 제조될 수 있다. 예를 들면, 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 하나의 반도체 장치로 집적되어 MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(Secure Digital) 카드, USB(Universal Serial Bus) 저장 장치, UFS(Universal Flash Storage) 장치, PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 중 어느 하나로 제조될 수 있다.
도 18은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이버(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 블럭도이다. 도 18을 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 솔리드 스테이트 드라이브(solid state drive, 이하, SSD라 칭함, 2200)를 포함할 수 있다.
SSD(2200)는 SSD 컨트롤러(2210), 버퍼 메모리 장치(2220), 불휘발성 메모리 장치들(2231~223n), 전원 공급기(2240), 신호 커넥터(2250), 전원 커넥터(2260)를 포함할 수 있다.
SSD(2200)는 호스트 장치(2100)의 요청에 응답하여 동작할 수 있다. 즉, SSD 컨트롤러(2210)는 호스트 장치(2100)로부터의 요청에 응답하여 불휘발성 메모리 장치들(2231~223n)을 액세스하도록 구성될 수 있다. 예를 들면, SSD 컨트롤러(2210)는 불휘발성 메모리 장치들(2231~223n)의 읽기, 프로그램 그리고 소거 동작을 제어하도록 구성될 수 있다.
버퍼 메모리 장치(2220)는 불휘발성 메모리 장치들(2231~223n)에 저장될 데이터를 임시 저장하도록 구성될 수 있다. 또한, 버퍼 메모리 장치(2220)는 불휘발성 메모리 장치들(2231~223n)로부터 읽혀진 데이터를 임시 저장하도록 구성될 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 SSD 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 불휘발성 메모리 장치들(2231~223n)로 전송될 수 있다.
불휘발성 메모리 장치들(2231~223n)은 SSD(2200)의 저장 매체로 사용될 수 있다. 불휘발성 메모리 장치들(2231~223n) 각각은 복수의 채널들(CH1~CHn)을 통해 SSD 컨트롤러(2210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(2240)는 전원 커넥터(2260)를 통해 입력된 전원(PWR)을 SSD(2200) 내부에 제공하도록 구성될 수 있다. 전원 공급기(2240)는 보조 전원 공급기(2241)를 포함할 수 있다. 보조 전원 공급기(2241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(2200)가 정상적으로 종료될 수 있도록 전원을 공급하도록 구성될 수 있다. 보조 전원 공급기(2241)는 전원(PWR)을 충전할 수 있는 슈퍼 캐패시터들(super capacitors)을 포함할 수 있다.
SSD 컨트롤러(2210)는 신호 커넥터(2250)를 통해서 호스트 장치(2100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. 신호 커넥터(2250)는 호스트 장치(2100)와 SSD(2200)의 인터페이스 방식에 따라 PATA(Parallel Advanced Technology Attachment), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCI-E(PCI Express) 등의 커넥터로 구성될 수 있다.
도 19는 도 18에 도시된 SSD 컨트롤러를 예시적으로 보여주는 블럭도이다. 도 19를 참조하면, SSD 컨트롤러(2210)는 메모리 인터페이스 유닛(2211), 호스트 인터페이스 유닛(2212), 에러 정정 코드(ECC) 유닛(2213), 컨트롤 유닛(2214), 램(2215) 및 롬(2216)을 포함할 수 있다.
메모리 인터페이스 유닛(2211)은 불휘발성 메모리 장치들(2231~223n)에 커맨드 및 어드레스와 같은 제어 신호를 제공하도록 구성될 수 있다. 그리고 메모리 인터페이스 유닛(2211)은 불휘발성 메모리 장치들(2231~223n)과 데이터를 주고 받도록 구성될 수 있다. 메모리 인터페이스 유닛(2211)은 컨트롤 유닛(2214)의 제어에 따라 버퍼 메모리 장치(2220)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)할 수 있다. 그리고 메모리 인터페이스 유닛(2211)은 컨트롤 유닛(2214)의 제어에 따라 불휘발성 메모리 장치들(2231~223n)로부터 읽혀진 데이터를 버퍼 메모리 장치(2220)로 전달할 수 있다.
호스트 인터페이스 유닛(2212)은 호스트 장치(2100)의 프로토콜에 대응하여 SSD(2200)와의 인터페이싱을 제공하도록 구성될 수 있다. 예를 들면, 호스트 인터페이스(2212)는 PATA(Parallel Advanced Technology Attachment), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCI-E(PCI Expresss) 프로토콜들 중 어느 하나를 통해 호스트 장치(2100)와 통신하도록 구성될 수 있다. 또한, 호스트 인터페이스 유닛(2212)은 호스트 장치(2100)가 SSD(2200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
ECC 유닛(2213)은 불휘발성 메모리 장치들(2231~223n)로 전송되는 데이터에 근거하여 패러티 비트를 생성하도록 구성될 수 있다. 생성된 패러티 비트는 불휘발성 메모리(2231~223n)의 스페어 영역(spare area)에 저장될 수 있다. ECC 유닛(2213)은 불휘발성 메모리 장치들(2231~223n)로부터 읽혀진 데이터의 에러를 검출하도록 구성될 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 검출된 에러를 정정하도록 구성될 수 있다.
컨트롤 유닛(2214)은 호스트 장치(2100)로부터 입력된 신호(SGL)를 분석하고 처리하도록 구성될 수 있다. 컨트롤 유닛(2214)은 호스트 장치(2100)의 요청에 응답하여 SSD 컨트롤러(2210)의 제반 동작을 제어할 수 있다. 컨트롤 유닛(2214)은 SSD(2200)를 구동하기 위한 펌웨어에 따라서 버퍼 메모리 장치(2220) 및 불휘발성 메모리 장치들(2231~223n)의 동작을 제어할 수 있다. 램(2215)은 이러한 펌웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
컨트롤 유닛(2214)은 메인 부트 모드인지 서브 부트 모드인지를 판단할 수 있다. 컨트롤 유닛(2214)은 판단 결과에 근거하여 롬(2216)에 저장된 메인 부트 코드의 실행을 통해서 메인 부트 모드로 동작하거나 서브 부트 모드를 수행할 수 있다.
도 20은 본 발명의 실시 예에 따른 데이터 저장 장치가 장착되는 컴퓨터 시스템을 예시적으로 보여주는 블럭도이다. 도 20을 참조하면, 컴퓨터 시스템(3000)은 시스템 버스(3700)에 전기적으로 연결되는 네트워크 어댑터(3100), 중앙 처리 장치(3200), 데이터 저장 장치(3300), 램(3400), 롬(3500) 그리고 사용자 인터페이스(3600)를 포함할 수 있다. 여기에서, 데이터 저장 장치(3300)는 도 1에 도시된 데이터 저장 장치(100), 도 17에 도시된 데이터 저장 장치(1200) 또는 도 18에 도시된 SSD(2200)로 구성될 수 있다.
네트워크 어댑터(3100)는 컴퓨터 시스템(3000)과 외부의 네트워크들 사이의 인터페이싱을 제공한다. 중앙 처리 장치(3200)는 램(3400)에 상주하는 운영 체제(Operating System)나 응용 프로그램(Application Program)을 구동하기 위한 제반 연산 처리를 수행한다.
데이터 저장 장치(3300)는 컴퓨터 시스템(3000)에서 필요한 제반 데이터를 저장한다. 예를 들면, 컴퓨터 시스템(3000)을 구동하기 위한 운영 체제(Operating System), 응용 프로그램(Application Program), 다양한 프로그램 모듈(Program Module), 프로그램 데이터(Program data), 그리고 유저 데이터(User data) 등이 데이터 저장 장치(3300)에 저장된다.
램(3400)은 컴퓨터 시스템(3000)의 동작 메모리 장치로 사용될 수 있다. 부팅 시에 램(3400)에는 데이터 저장 장치(3300)로부터 읽혀진 운영 체제(Operating System), 응용 프로그램(Application Program), 다양한 프로그램 모듈(Program Module)과 프로그램들의 구동에 소요되는 프로그램 데이터(Program data)가 로드된다. 롬(3500)에는 운영 체제(Operating System)가 구동되기 이전부터 활성화되는 기본적인 입출력 시스템인 바이오스(BIOS: Basic Input/Output System)가 저장된다. 유저 인터페이스(3600)를 통해서 컴퓨터 시스템(3000)과 사용자 사이의 정보 교환이 이루어진다.
이상에서, 본 발명은 구체적인 실시 예를 통해 설명되고 있으나, 본 발명은 그 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있음은 잘 이해될 것이다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며, 후술하는 특허청구범위 및 이와 균등한 것들에 의해 정해져야 한다. 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 잘 이해될 것이다.
100 : 데이터 저장 장치
110 : 컨트롤러
111 : 컨트롤 유닛
114 : 롬
115 : 동작 메모리
116 : 메모리 인터페이스 유닛
120 : 불휘발성 메모리 장치

Claims (23)

  1. 부트 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계;
    상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계; 그리고
    상기 서브 부트 모드인 것으로 판단되는 경우 동작 메모리에 로딩된 서브 부트 코드를 실행한 이후에 상기 메인 부트 코드를 실행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 서브 부트 코드를 실행하는 단계는 불휘발성 메모리 장치를 초기화하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  3. 제2항에 있어서,
    상기 서브 부트 코드를 실행하는 단계는 상기 불휘발성 메모리 장치의 내부 동작에 사용되는 바이어스 조건을 초기화하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  4. 제1항에 있어서,
    상기 메인 부트 코드를 실행하는 단계는 불휘발성 메모리 장치에 저장된 운영 코드를 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  5. 제4항에 있어서,
    상기 동작 메모리에 로딩된 상기 운영 코드를 실행하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  6. 제5항에 있어서,
    상기 운영 코드를 실행하는 단계는,
    상기 서브 부트 모드의 실행을 지시하는 셋 데이터를 상기 부트 모드 레지스터에 저장하는 단계; 그리고
    상기 서브 부트 코드를 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  7. 제6항에 있어서,
    상기 운영 코드를 실행하는 단계는 하드웨어 리셋이 요청되었는지의 여부를 판단하는 단계를 더 포함하되,
    상기 하드웨어 리셋이 요청된 것으로 판단된 경우 상기 메인 부트 모드 인지 또는 상기 서브 부트 모드인지를 판단하는 단계를 수행하는 데이터 저장 장치의 동작 방법.
  8. 절전 모드로 진입하기 전에 절전 모드 레지스터를 셋팅하는 단계;
    절전 모드에서 정상 모드로 복귀하는 경우 상기 절전 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계;
    상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계; 그리고
    상기 서브 부트 모드인 것으로 판단되는 경우 동작 메모리에 유지된 서브 부트 코드를 실행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  9. 제8항에 있어서,
    상기 서브 부트 코드를 실행하는 단계는 상기 정상 모드로 동작하는 동안 계속적으로 수행되는 연속성 운영 코드 만을 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  10. 제8항에 있어서,
    상기 메인 부트 코트를 실행하는 단계는 상기 정상 모드로 진입하기 전까지 1회에 한하여 수행되는 일회성 운영 코드와 상기 정상 모드로 동작하는 동안 계속적으로 수행되는 연속성 운영 코드를 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  11. 제10항에 있어서,
    상기 동작 메모리에 로딩된 상기 일회성 운영 코드와 상기 연속성 운영 코드를 실행하는 단계를 더 포함하는 데이터 저장 장치.
  12. 제11항에 있어서,
    상기 일회성 운영 코드를 실행하는 단계는 상기 서브 부트 코드를 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  13. 제8항에 있어서,
    상기 절전 모드 레지스터를 셋팅하는 단계는 상기 서브 부트 모드의 실행을 지시하는 셋 데이터를 상기 절전 모드 레지스터에 저장하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  14. 부트 모드 레지스터에 저장된 데이터에 근거하여 메인 부트 모드인지 또는 서브 부트 모드인지를 판단하는 단계;
    상기 메인 부트 모드인 것으로 판단되는 경우 롬에 저장된 메인 부트 코드를 실행하는 단계;
    상기 서브 부트 모드인 것으로 판단되는 경우 절전 모드 레지스터에 저장된 데이터에 근거하여 절전 모드로부터 복귀된 것인지 아닌지를 판단하는 단계;
    상기 절전 모드로부터 복귀된 것이 아닌 것으로 판단되는 경우 동작 메모리에 저장된 제1 서브 부트 코드를 실행하는 단계; 그리고
    상기 절전 모드로부터 복귀된 것으로 판단되는 경우 상기 동작 메모리에 저장된 제2 서브 부트 코드를 실행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  15. 제14항에 있어서,
    상기 제1 서브 부트 코드를 실행하는 단계는 불휘발성 메모리 장치를 초기화하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  16. 제15항에 있어서,
    상기 서브 부트 코드를 실행하는 단계는 상기 불휘발성 메모리 장치의 내부 동작에 사용되는 바이어스 조건을 초기화하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  17. 제14항에 있어서,
    상기 제2 서브 부트 코드를 실행하는 단계는 정상 모드로 동작하는 동안 계속적으로 수행되는 연속성 운영 코드 만을 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  18. 제14항에 있어서,
    상기 메인 부트 코트를 실행하는 단계는 상기 정상 모드로 진입하기 전까지 1회에 한하여 수행되는 일회성 운영 코드와 상기 정상 모드로 동작하는 동안 계속적으로 수행되는 연속성 운영 코드를 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  19. 제18항에 있어서,
    상기 일회성 운영 코드와 상기 연속성 운영 코드를 실행하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  20. 제19항에 있어서,
    상기 일회성 운영 코드를 실행하는 단계는,
    상기 서브 부트 모드의 실행을 지시하는 셋 데이터를 상기 부트 모드 레지스터에 저장하는 단계; 그리고
    상기 제1 서브 부트 코드와 상기 제2 서브 부트 코드를 상기 동작 메모리에 로딩하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  21. 제19항에 있어서,
    상기 연속성 운영 코드를 실행하는 단계는,
    하드웨어 리셋이 요청되었는지의 여부를 판단하는 단계; 그리고
    상기 절전 모드가 요청되었는지의 여부를 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  22. 제21항에 있어서,
    상기 하드웨어 리셋이 요청된 것으로 판단된 경우 상기 메인 부트 모드인지 또는 상기 서브 부트 모드인지를 판단하는 단계를 수행하는 데이터 저장 장치의 동작 방법.
  23. 제21항에 있어서,
    상기 절전 모드가 요청된 것으로 판단된 경우 상기 절전 모드로부터 복귀되었음을 의미하는 셋 데이터를 상기 절전 모드 레지스터에 저장하는 단계와 상기 절전 모드로 진입하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
KR1020140108526A 2014-08-20 2014-08-20 데이터 저장 장치의 동작 방법 KR102225313B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020140108526A KR102225313B1 (ko) 2014-08-20 2014-08-20 데이터 저장 장치의 동작 방법
US14/566,266 US9606811B2 (en) 2014-08-20 2014-12-10 Operating method of data storage device
TW104120808A TWI660306B (zh) 2014-08-20 2015-06-26 資料儲存裝置的操作方法
CN201510515081.3A CN105389122B (zh) 2014-08-20 2015-08-20 数据储存器件的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140108526A KR102225313B1 (ko) 2014-08-20 2014-08-20 데이터 저장 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160022671A true KR20160022671A (ko) 2016-03-02
KR102225313B1 KR102225313B1 (ko) 2021-03-10

Family

ID=55348385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140108526A KR102225313B1 (ko) 2014-08-20 2014-08-20 데이터 저장 장치의 동작 방법

Country Status (4)

Country Link
US (1) US9606811B2 (ko)
KR (1) KR102225313B1 (ko)
CN (1) CN105389122B (ko)
TW (1) TWI660306B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307783B2 (en) 2019-03-27 2022-04-19 SK Hynix Inc. Memory controller performing recovery operation using recovery code and operating method thereof

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI615705B (zh) * 2016-05-31 2018-02-21 瑞昱半導體股份有限公司 於電腦系統中重置記憶體的方法
CN107480000B (zh) * 2016-06-08 2020-12-11 瑞昱半导体股份有限公司 于电脑系统中重置存储器的方法
TWI673716B (zh) * 2018-10-09 2019-10-01 慧榮科技股份有限公司 快閃記憶體控制器、快閃記憶體控制器的控制方法及相關的電子裝置
US10949106B2 (en) 2019-01-18 2021-03-16 Silicon Motion Inc. Initialization methods and associated controller, memory device and host
TWI709859B (zh) 2019-01-18 2020-11-11 慧榮科技股份有限公司 安全數位卡之方法、快閃記憶體控制器以及電子裝置
TWI792066B (zh) * 2019-01-18 2023-02-11 慧榮科技股份有限公司 安全數位卡之方法、快閃記憶體控制器以及電子裝置
JP2021034080A (ja) * 2019-08-23 2021-03-01 株式会社東芝 磁気ディスク装置、および該磁気ディスク装置の動作モード規定方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070260867A1 (en) * 2006-05-04 2007-11-08 Sheridan Ethier System executing a fast boot wake-up
US20080148038A1 (en) * 2006-12-18 2008-06-19 Atsushi Abe System and Method for Implementing Boot/Recovery on a Data Processing Sysem
KR20130040638A (ko) * 2011-10-14 2013-04-24 삼성전자주식회사 빠른 부팅을 위한 부트 이미지의 에러를 복구하는 방법 및 이를 수행하는 화상형성장치
KR20140080948A (ko) * 2012-12-21 2014-07-01 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292890B1 (en) * 1998-09-29 2001-09-18 Compaq Computer Corporation Computer system with dynamically configurable boot order
US6393559B1 (en) * 1999-04-30 2002-05-21 Dell Usa, L.P. Method and computer for self-healing BIOS initialization code
US7024547B2 (en) * 2001-12-10 2006-04-04 Intel Corporation Method and system for initializing a hardware device
US20060041738A1 (en) * 2004-08-17 2006-02-23 Yu-Chen Lai Recovery method for master boot record of hard disk drive
US7849466B2 (en) * 2005-07-12 2010-12-07 Qualcomm Incorporated Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
US7689819B2 (en) * 2005-07-29 2010-03-30 Broadcom Corporation Method and system for a self-booting Ethernet controller
US7669048B2 (en) * 2005-12-09 2010-02-23 Microsoft Corporation Computing device limiting mechanism
US8386672B2 (en) * 2008-07-08 2013-02-26 Dell Products L.P. Systems, methods and media for disabling graphic processing units
TW201009706A (en) * 2008-08-22 2010-03-01 Asustek Comp Inc Update method for basic input/output system and update system thereof
CN101739267A (zh) * 2008-11-27 2010-06-16 英业达股份有限公司 外围装置初始化方法及计算机系统
JP2010140266A (ja) * 2008-12-11 2010-06-24 Toshiba Corp 電子デバイスシステムと電子デバイス
US8438423B1 (en) * 2009-03-31 2013-05-07 American Megatrends, Inc. Invalid setup recovery
US20120011393A1 (en) * 2010-07-06 2012-01-12 Roberts Richard B Bios recovery
TWI436278B (zh) * 2011-03-14 2014-05-01 Shuttle Inc 電腦快速開機系統及其方法
KR101799292B1 (ko) * 2011-04-19 2017-11-20 삼성전자주식회사 전자 장치 및 그 부팅 방법
KR101845512B1 (ko) * 2011-08-10 2018-04-04 삼성전자주식회사 메모리 시스템의 초기화 방법
KR20130108926A (ko) 2012-03-26 2013-10-07 주식회사 블루실리카코리아 전자 기기 및 그것의 부팅 방법
TWI479421B (zh) * 2013-02-04 2015-04-01 Wistron Corp 開機方法與電子裝置
KR20140102070A (ko) * 2013-02-13 2014-08-21 삼성전자주식회사 사용자 디바이스의 패스트 부팅 방법 및 장치
US9189248B2 (en) * 2013-04-25 2015-11-17 Insyde Software Corp. Specialized boot path for speeding up resume from sleep state

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070260867A1 (en) * 2006-05-04 2007-11-08 Sheridan Ethier System executing a fast boot wake-up
US20080148038A1 (en) * 2006-12-18 2008-06-19 Atsushi Abe System and Method for Implementing Boot/Recovery on a Data Processing Sysem
KR20130040638A (ko) * 2011-10-14 2013-04-24 삼성전자주식회사 빠른 부팅을 위한 부트 이미지의 에러를 복구하는 방법 및 이를 수행하는 화상형성장치
KR20140080948A (ko) * 2012-12-21 2014-07-01 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307783B2 (en) 2019-03-27 2022-04-19 SK Hynix Inc. Memory controller performing recovery operation using recovery code and operating method thereof

Also Published As

Publication number Publication date
US9606811B2 (en) 2017-03-28
CN105389122B (zh) 2020-02-28
TW201608467A (zh) 2016-03-01
TWI660306B (zh) 2019-05-21
KR102225313B1 (ko) 2021-03-10
US20160055008A1 (en) 2016-02-25
CN105389122A (zh) 2016-03-09

Similar Documents

Publication Publication Date Title
KR102225313B1 (ko) 데이터 저장 장치의 동작 방법
US9436267B2 (en) Data storage device
US20160062690A1 (en) Data storage device, data processing system including the same, and operating method thereof
KR102395541B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
US9324444B2 (en) Data storage device
KR20170094674A (ko) 데이터 저장 장치
KR20200089939A (ko) 메모리 시스템 및 그 동작 방법
US9588708B2 (en) Semiconductor memory device, operating method thereof, and data storage device including the same
US9524757B2 (en) Data storage device capable of reducing power consumption
KR102180972B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US20150169235A1 (en) Data storage device and operating method thereof
US10073637B2 (en) Data storage device based on a descriptor and operating method thereof
KR102561095B1 (ko) 반도체 메모리 장치의 동작 방법
CN111124035B (zh) 基于实时时钟管理空闲页面的存储器系统及其操作方法
KR20220045342A (ko) 호스트 장치, 데이터 저장 장치, 데이터 처리 시스템 및 데이터 처리 방법
KR20150044654A (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US20170372759A1 (en) Active control circuit, internal voltage generation circuit, memory apparatus and system using the same
US20240004578A1 (en) Memory system and method of operating memory controller included in the memory system
KR20150072485A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20150082930A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

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