KR20170133116A - 전자 장치 및 그것의 동작 방법 - Google Patents

전자 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170133116A
KR20170133116A KR1020160064140A KR20160064140A KR20170133116A KR 20170133116 A KR20170133116 A KR 20170133116A KR 1020160064140 A KR1020160064140 A KR 1020160064140A KR 20160064140 A KR20160064140 A KR 20160064140A KR 20170133116 A KR20170133116 A KR 20170133116A
Authority
KR
South Korea
Prior art keywords
memory
partial
code
processor
loading
Prior art date
Application number
KR1020160064140A
Other languages
English (en)
Inventor
이주영
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020160064140A priority Critical patent/KR20170133116A/ko
Priority to US15/249,117 priority patent/US20170344260A1/en
Publication of KR20170133116A publication Critical patent/KR20170133116A/ko

Links

Images

Classifications

    • 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/061Improving I/O performance
    • 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
    • G06F9/44568Immediately runnable code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • 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

Landscapes

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

Abstract

전자 장치는 각각이 하나 이상의 내부 동작들에 관련된 복수의 부분 코드들을 저장하는 제1 메모리 및 상기 복수의 부분 코드들을 상기 제1 메모리로부터 제2 메모리로 각각 로딩하도록 구성된 프로세서를 포함하되, 상기 프로세서는 상기 제2 메모리로 로딩된 제1 부분 코드를 실행함으로써 상기 제1 부분 코드에 관련된 내부 동작을 수행한다.

Description

전자 장치 및 그것의 동작 방법{ELECTRONIC DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 더욱 상세하게는 메모리를 포함하는 전자 장치에 관한 것이다.
전자 장치는 파워온되거나 슬립 모드로부터 웨이크업될 때, 비휘발성 메모리 장치로부터 휘발성 메모리 장치로 코드를 로딩하고, 로딩된 코드를 구동함으로써 내부 동작들을 수행할 수 있다. 코드 로딩 동작에 오랜 시간이 소요될 경우, 전자 장치의 안정화는 지연되므로 신속한 서비스 제공이 어려울 수 있다.
본 발명의 실시 예는 파워 온되거나 슬립 모드로부터 웨이크 업될 때 신속하게 안정화될 수 있는 전자 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 전자 장치는 각각이 하나 이상의 내부 동작들에 관련된 복수의 부분 코드들을 저장하는 제1 메모리; 및 상기 복수의 부분 코드들을 상기 제1 메모리로부터 제2 메모리로 각각 로딩하도록 구성된 프로세서를 포함하되, 상기 프로세서는 상기 제2 메모리로 로딩된 제1 부분 코드를 실행함으로써 상기 제1 부분 코드에 관련된 내부 동작을 수행할 수 있다.
본 발명의 실시 예에 따른 전자 장치의 동작 방법은 각각이 하나 이상의 내부 동작들에 관련된 복수의 부분 코드들을 제1 메모리로부터 제2 메모리로 각각 로딩하는 단계; 및 상기 제2 메모리로 로딩된 제1 부분 코드를 실행함으로써 상기 제1 부분 코드에 관련된 내부 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 전자 장치 및 그것의 동작 방법은 파워 온되거나 슬립 모드로부터 웨이크 업될 때 신속하게 안정화될 수 있다.
도1은 본 발명의 실시 예에 따른 전자 장치를 도시한 블록도,
도2는 도1의 전자 장치의 동작 방법을 예시적으로 도시한 순서도,
도3 내지 도5는 도1의 전자 장치의 코드 로딩 방법들을 예시적으로 도시한 순서도,
도6은 본 발명의 실시 예에 따른 SSD를 도시하는 블록도,
도7은 본 발명의 실시 예에 따른 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 전자 장치(10)를 도시한 블록도이다.
전자 장치(10)는 데이터를 처리할 수 있는 장치로서, 예를 들어, 컴퓨터, 랩탑, 넷북, 스마트폰, 디지털 TV, 디지털 카메라, 네비게이션, 워크스테이션 또는 웨어러블 장치 등일 수 있다.
실시 예에 따라, 전자 장치(10)는 데이터 저장 장치로서, PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등일 수 있다.
전자 장치(10)는 프로세서(100), 제1 메모리(200) 및 제2 메모리(300)를 포함할 수 있다.
프로세서(100)는 전자 장치(10)의 제반 동작을 제어할 수 있다. 프로세서(100)는 코드 로딩 동작을 통해 제1 메모리(200)로부터 제2 메모리(300)로 코드(201)를 로딩하고, 로딩된 코드(201)를 실행함으로써 전자 장치(10)의 내부 동작들을 수행할 수 있다. 코드 로딩 동작은 파워 온될 때 또는 슬립 모드에서 웨이크 업될 때 수행될 수 있다.
코드(201)는 전자 장치(10)가 운영되는데 필요한 소프트웨어일 수 있고, 프로세서(100)에 의해 수행될 복수의 명령들을 포함할 수 있다. 코드(201)는 부분 코드들(CODE1~CODE4)로 구성될 수 있고, 부분 코드들(CODE1~CODE4) 각각은 하나 이상의 독립적인 내부 동작들에 관련될 수 있다. 따라서, 프로세서(100)는 부분 코드들(CODE1~CODE4) 각각을 실행함으로써 관련된 내부 동작을 수행할 수 있다. 도1에서 코드(201)는 4개의 부분 코드들(CODE1~CODE4)로 구성되는 것으로 도시되나, 본 발명의 실시 예에 따르면, 코드(201)를 구성하는 부분 코드들의 개수는 이에 제한되지 않는다.
프로세서(100)는 부분 코드들(CODE1~CODE4)을 제1 메모리(200)로부터 제2 메모리(300)로 각각 로딩할 수 있다. 즉, 프로세서(100)는 부분 코드들(CODE1~CODE4)을 한번의 코드 로딩 동작을 통해 일시에 제2 메모리(300)로 로딩하지 않고, 전자 장치(10)의 동작 상태에 따라 부분 코드들(CODE1~CODE4)을 복수의 코드 로딩 동작들을 통해 나누어 로딩할 수 있다. 이때, 부분 코드들(CODE1~CODE4) 각각은 하나 이상의 독립적인 내부 동작들에 관련되므로, 프로세서(100)는 전체 코드(201)가 모두 제2 메모리(300)로 로딩되기 전에도 이미 로딩된 부분 코드들을 실행함으로써 관련된 내부 동작을 수행할 수 있다. 결과적으로, 본 발명에서 프로세서(100)는 우선적으로 필요한 부분 코드를 먼저 로딩하고, 먼저 로딩된 부분 코드에 관련된 내부 동작을 수행하는 것과 병렬적으로 나머지 부분 코드들을 로딩할 수 있다. 따라서, 전자 장치(10)의 코드 로딩 시간, 부팅 시간 및 안정화 시간이 단축됨으로써 동작 성능이 향상될 수 있다.
구체적으로, 프로세서(100)는 제2 메모리(300)로 먼저 로딩된 제1 부분 코드(CODE1)에 관련된 내부 동작을 수행하는 것과 병렬적으로 제2 부분 코드(CODE2)를 제2 메모리(300)로 로딩할 수 있다. 예를 들어, 프로세서(100)는 제1 부분 코드(CODE1)에 관련된 내부 동작을 수행하는 동시에 제2 부분 코드(CODE2)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다. 예를 들어, 프로세서(100)는 제1 부분 코드(CODE1)에 관련된 내부 동작을 수행하는 동안 제2 부분 코드(CODE2)가 제1 메모리(200)의 메모리 영역으로부터 출력 버퍼로 리드되도록 제어하고, 제1 부분 코드(CODE1)에 관련된 내부 동작이 완료되었을 때 제2 부분 코드(CODE2)가 제1 메모리(200)의 출력 버퍼로부터 제2 메모리(300)로 출력되도록 제어할 수 있다. 즉, 제2 부분 코드(CODE2)가 제1 메모리(200)의 메모리 영역으로부터 출력 버퍼로 리드되는 긴 시간이 제1 부분 코드(CODE1)에 관련된 내부 동작, 예를 들어, 초기화 동작의 수행 시간과 중첩됨으로써 전자 장치는 보다 신속하게 코드 로딩 동작을 완료할 수 있다.
실시 예에 따라, 프로세서(100)는 유휴 상태로 진입했는지 여부를 판단하고, 유휴 상태로 진입한 것으로 판단될 때 제3 부분 코드(CODE3)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다. 제3 부분 코드(CODE3)는 우선적으로 로딩될 필요가 없는, 바로 로딩되지 않더라도 전자 장치(10)의 동작에 크게 지장을 주지 않는 부분 코드일 수 있다.
프로세서(100)는, 부분 코드들(CODE1~CODE4)에 대한 소정의 로딩 순서에 따라 부분 코드들(CODE1~CODE4)을 로딩할 수 있다. 예를 들어, 소정의 로딩 순서는 부분 코드들(CODE1~CODE4)에 관련된 내부 동작들의 중요도에 근거하여 결정될 수 있다. 예를 들어, 프로세서(100)는 전자 장치(10)의 내부 파라미터들을 설정하기 위한 초기화 동작에 관련되는 부분 코드, 예를 들어, 제1 부분 코드(CODE1)를 최초로 로딩할 수 있다.
프로세서(100)는 외부의 요청에 따라 소정의 로딩 순서에 무관하게, 외부의 요청에 관련된 부분 코드, 예를 들어, 제4 부분 코드(CODE4)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다. 즉, 제4 부분 코드(CODE4)는 소정의 로딩 순서에 따르면 다른 부분 코드들(CODE1~CODE3)보다 먼저 로딩될 차례가 아니더라도 외부 요청을 처리하기 위해서 로딩 순서에 무관하게, 먼저 로딩될 수 있다. 그리고, 프로세서(100)는 제4 부분 코드(CODE4)가 제2 메모리(300)로 로딩될 때까지 외부의 요청의 처리를 보류할 수 있다. 한편, 외부는 전자 장치(10)를 사용하는 사용자 및 전자 장치(10)에 연결되어 전자 장치(10)를 제어하는 외부 장치일 수 있다.
실시 예에 따라, 프로세서(100)는 이전에 파워 오프될 때의 상태에 따라 부분 코드들(CODE1~CODE4) 중 일부를 제2 메모리(300)로 로딩하지 않을 수 있다. 예를 들어, 이전에 파워 오프되기 전에 수행된 내부 동작이 재차 수행될 필요가 없을 것으로 판단될 때 프로세서(100)는 해당 내부 동작에 관련된 부분 코드를 제2 메모리(300)로 로딩하지 않을 수 있다. 결과적으로, 코드 로딩 동작은 더욱 신속하게 완료될 수 있다.
제1 메모리(200)는 프로세서(100)의 제어에 따라 데이터를 저장할 수 있다. 전자 장치(10)가, 예를 들어, 데이터 저장 장치일 때, 제1 메모리(200)는 프로세서(100)의 제어에 따라 외부로부터 전송된 데이터를 저장할 수 있다.
한편, 제1 메모리(200)는 전자 장치(10)로 파워가 공급되지 않더라도 이전에 저장된 데이터를 유지할 수 있다. 예를 들어, 제1 메모리(200)는 PROM(Program mable ROM), OTRROM(One Time PROM), EPROM(Erasable PROM), 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등의 비휘발성 메모리 장치를 포함할 수 있다.
제1 메모리(200)는 비휘발성 특성에 기인하여 부분 코드들(CODE1~CODE4)을 저장할 수 있다. 부분 코드들(CODE1~CODE4)은 전자 장치(10)의 제조 시에 제1 메모리(200)에 저장될 수 있다. 부분 코드들(CODE1~CODE4)은 제1 메모리(200)에서 서로 구분되는 메모리 영역들에 각각 저장될 수 있다. 부분 코드들(CODE1~CODE4) 각각은 코드 크기에 따라, 제1 메모리(200)가 리드 동작을 수행하는 단위, 즉, 제1 메모리(200)가 한번에 리드할 수 있는 단위에 대응하는 단위 메모리 영역에 저장될 수 있다. 부분 코드들(CODE1~CODE4) 각각은 코드 크기에 따라, 최소 횟수의 리드 동작을 통해 리드될 수 있도록 제1 메모리(200)에 저장될 수 있다.
실시 예에 따라, 제1 메모리(200)는 복수의 메모리 장치들을 포함할 수 있고, 부분 코드들(CODE1~CODE4)은 복수의 메모리 장치들에 나누어 저장될 수 있다. 이러한 경우, 서로 다른 메모리 장치들에 저장된 부분 코드들(CODE1~CODE4)은 병렬적으로 로딩될 수 있고, 따라서, 코드 로딩 동작은 더욱 신속하게 완료될 수 있다.
제2 메모리(300)는 프로세서(100)의 동작 메모리, 버퍼 메모리 또는 캐시 메모리 등의 기능을 수행할 수 있다. 제2 메모리(300)는 동작 메모리로서 제1 메모리(200)로부터 전송되어 프로세서(100)에 의해 실행되는 코드(201)를 저장할 수 있다. 제2 메모리(300)는 버퍼 메모리로서 외부 및 제1 메모리(200) 간에 전송되는 데이터를 버퍼링할 수 있다. 제2 메모리(300)는 캐시 메모리로서 캐시 데이터를 임시 저장할 수 있다.
제2 메모리(300)는 전자 장치(10)로 파워가 공급되지 않거나 전자 장치(10)가 슬립 모드에 진입할 경우 저장된 데이터를 유지하지 못할 수 있다. 예를 들어, 제2 메모리(300)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory) 등을 휘발성 메모리 장치를 포함할 수 있다.
도2는 도1의 전자 장치(10)의 동작 방법을 예시적으로 도시한 순서도이다.
단계(S110)에서, 프로세서(100)는 코드 로딩 동작을 통해 부분 코드들(CODE1~CODE4)을 제1 메모리(200)로부터 제2 메모리(300)로 각각 로딩할 수 있다. 코드 로딩 동작은 전자 장치(10)가 파워 온될 때 또는 슬립 모드에서 웨이크 업될 때 수행될 수 있다. 프로세서(100)는 부분 코드들(CODE1~CODE4)을 한번의 코드 로딩 동작을 통해 일시에 제2 메모리(300)로 로딩하지 않고, 전자 장치(10)의 동작 상태에 따라 부분 코드들(CODE1~CODE4)을 복수의 코드 로딩 동작들을 통해 나누어 로딩할 수 있다. 프로세서(100)는 전체 코드가 모두 로딩되지 않았더라도 이미 로딩된 부분 코드들을 실행함으로써 관련된 내부 동작을 수행할 수 있다.
도3 내지 도5는 도1의 전자 장치(10)의 코드 로딩 방법들을 예시적으로 도시한 순서도이다. 도3 내지 도5에 도시된 코드 로딩 방법들은 도2의 단계(S110)의 실시 예들일 수 있다.
도3을 참조하면, 단계(S210)에서, 프로세서(100)는 제1 부분 코드(CODE1)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다.
단계(S220)에서, 프로세서(100)는 제1 부분 코드(CODE1)를 실행함으로써 제1 부분 코드(CODE1)에 관련된 내부 동작을 수행하는 것과 병렬적으로 제2 부분 코드(CODE2)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다.
도4를 참조하면, 단계(S310)에서, 프로세서(100)는 전자 장치(10)가 유휴 상태로 진입했는지 여부를 판단할 수 있다. 유휴 상태로 진입하지 않은 것으로 판단될 때, 절차는 단계(S310)를 반복할 수 있다. 유휴 상태로 진입한 것으로 판단될 때, 절차는 단계(S320)로 이동할 수 있다.
단계(S320)에서, 프로세서(100)는 제3 부분 코드(CODE3)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다. 제3 부분 코드(CODE3)는 우선적으로 로딩될 필요가 없는, 바로 로딩되지 않더라도 전자 장치(10)의 동작에 크게 지장을 주지 않는 부분 코드일 수 있다.
도5를 참조하면, 단계(S410)에서, 프로세서(100)는 외부의 요청을 수신할 수 있다.
단계(S420)에서, 프로세서(100)는 부분 코드들(CODE1~CODE4)에 대한 소정의 로딩 순서에 무관하게, 수신된 요청에 관련된 제4 부분 코드(CODE4)를 제1 메모리(200)로부터 제2 메모리(300)로 로딩할 수 있다. 프로세서(100)는 제4 부분 코드(CODE4)가 로딩될 때까지 외부의 요청의 처리를 보류할 수 있다.
단계(S430)에서, 프로세서(100)는 제2 메모리(300)로 로딩된 제4 부분 코드(CODE4)를 실행함으로써 제4 부분 코드(CODE4)에 관련된 내부 동작을 수행하고 외부의 요청을 처리할 수 있다.
도6a 내지 도6c는 도1의 제1 메모리에 부분 코드들(CODE1~CODE4)이 저장되는 방법을 예시적으로 도시하는 도면이다.
상술한 바와 같이, 프로세서(100)는 부분 코드들(CODE1~CODE4) 각각을 다른 부분 코드들과 독립적으로 로딩할 수 있다. 따라서, 이를 효과적으로 수행하기 수행하기 위해서, 부분 코드들(CODE1~CODE4)은 제1 메모리(200)가 리드 동작을 수행하는 단위, 즉, 제1 메모리(200)가 한번에 리드할 수 있는 단위에 대응하는 단위 메모리 영역의 크기 및 코드 크기를 고려하여 제1 메모리(200)에 효율적으로 배치될 수 있다. 예를 들어, 각각의 부분 코드들(CODE1~CODE4)은 코드 크기에 따라, 서로 구분되는 단위 메모리 영역들에 저장될 수 있다. 예를 들어, 각각의 부분 코드들(CODE1~CODE4)은 코드 크기에 따라, 최소한의 리드 동작을 통해 리드될 수 있도록 제1 메모리(200)에 저장될 수 있다.
도6a 및 도6b는 단위 메모리 영역이, 예를 들어, 32Kbyte의 페이지일 때, 부분 코드들(CODE1~CODE4)이 코드 크기에 따라 제1 메모리(200)에 효율적으로 배치되는 경우들을 도시한다. 반면에, 도6c는 부분 코드들(CODE1~CODE4)의 코드 크기를 고려하지 않고, 예를 들어, 로딩 순서에 따라 비효율적으로 제1 메모리(200)에 배치되는 경우를 도시한다. 예를 들어, 도6c에서 제2 부분 코드(CODE2)는 페이지들(PAGE2, PAGE3)에 걸쳐 저장되어 있기 때문에 제2 메모리(300)로 로딩되기 위해서 각각의 페이지들(PAGE2, PAGE3)에 대해 리드 동작들이 수행되어야 하지만, 도6a 및 도6b에서는 하나의 페이지(PAGE3)에만 저장되어 있기 때문에 페이지(PAGE3)에 대한 리드 동작만 수행될 수 있다. 이처럼 도6a 및 도6b와 같이 저장될 때, 각각의 부분 코드들(CODE1~CODE4)은 최소한의 리드 동작을 통해 제2 메모리(300)로 로딩될 수 있으므로 도6c와 같이 저장될 때보다 빠른 속도로 코드 로딩이 완료될 수 있을 것이다.
한편, 부분 코드들(CODE1~CODE4)의 크기를 고려하여 부분 코드들을 적절한 위치에 저장할 경우, 공간 사용 측면에서 효율적일 수 있다. 예를 들어, 도6b에 도시된 바와 같이 페이지들(PAGE1, PAGE2)에 걸쳐 제1 부분 코드(CODE1)를 저장하고, 남은 공간에 제4 부분 코드(CODE4)를 저장할 경우 부분 코드들(CODE1~CODE4)을 저장하기 위해 총 4개의 페이지들(PAGE1~PAGE4)이 사용될 수 있다. 따라서, 이러한 경우 총 5개의 페이지들(PAGE1~PAGE5)을 사용하는 도6a의 경우보다 효율적일 수 있다.
도7은 본 발명의 실시 예에 따른 SSD(1000)를 도시하는 블록도이다.
SSD(1000)는 컨트롤러(1100)와 저장 매체(1200)를 포함할 수 있다.
컨트롤러(1100)는 호스트 장치(1500)와 저장 매체(1200) 사이의 데이터 교환을 제어할 수 있다. 컨트롤러(1100)는 프로세서(1110), 램(1120), 롬(1130), ECC부(1140), 호스트 인터페이스(1150) 및 저장 매체 인터페이스(1160)를 포함할 수 있다.
프로세서(1110)는 컨트롤러(1100)의 제반 동작을 제어할 수 있다. 프로세서(1110)는 호스트 장치(1500)의 데이터 처리 요청에 따라 저장 매체(1200)에 데이터를 저장하고, 저장 매체(1200)로부터 저장된 데이터를 리드할 수 있다. 프로세서(1110)는 저장 매체(1200)를 효율적으로 관리하기 위해서, 머지 동작 및 웨어 레벨링 동작 등과 같은 SSD(1000)의 내부 동작을 제어할 수 있다.
또한, 프로세서(1110)는 도1에 도시된 프로세서(100)과 실질적으로 유사하게 동작할 수 있다. 프로세서(1110)는 코드를 구성하는 복수의 부분 코드들을 한번의 코드 로딩 동작을 통해 일시에 램(1120)으로 로딩하지 않고, SSD(1000)의 동작 상태에 따라 복수의 코드 로딩 동작들을 통해 나누어 로딩할 수 있다. 프로세서(1110)는 우선적으로 필요한 부분 코드를 먼저 로딩하고, 먼저 로딩된 부분 코드에 관련된 내부 동작을 수행하는 것과 병렬적으로 나머지 부분 코드들을 로딩할 수 있다.
램(1120)은 도1에 도시된 제2 메모리(300)와 같이, 프로세서(1110)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 램(1120)은 호스트 인터페이스(1150)로부터 전송된 데이터를 저장 매체(1200)에 전달하기 전에 임시 저장할 수 있고. 저장 매체(1200)로부터 전송된 데이터를 호스트 장치(1500)로 전달하기 전에 임시 저장할 수 있다.
롬(1130)은 도1에 도시된 제1 메모리(200)와 같이, 프로세서(1110)에 의해 로딩되는 코드를 저장할 수 있다. 코드는 프로세서(1110)가 컨트롤러(1100)의 내부 유닛들을 제어하기 위해서 프로세서(1110)에 의해 처리되는 명령들을 포함할 수 있다.
ECC부(1140)는 저장 매체(1200)에 저장될 데이터를 인코딩하고, 저장 매체(1200)로부터 리드된 데이터를 디코딩할 수 있다. ECC부(1140)는 ECC 알고리즘에 따라 데이터에 발생된 에러를 검출하고 정정할 수 있다.
호스트 인터페이스(1150)는 호스트 장치(1500)와 데이터 처리 요청 및 데이터 등을 교환할 수 있다.
저장 매체 인터페이스(1160)는 저장 매체(1200)로 제어 신호 및 데이터를 전송할 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)로부터 데이터를 전송받을 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)와 복수의 채널들(CH0~CHn)을 통해 연결될 수 있다.
저장 매체(1200)는 복수의 비휘발성 메모리 장치들(NVM0~NVMn)을 포함할 수 있다. 복수의 비휘발성 메모리 장치들(NVM0~NVMn) 각각은 컨트롤러(1100)의 제어에 따라 라이트 동작 및 리드 동작을 수행할 수 있다. 복수의 비휘발성 메모리 장치들(NVM0~NVMn) 각각은 도1에 도시된 제1 메모리(200)와 같이, 프로세서(1110)에 의해 로딩되는 코드를 저장할 수 있다.
도8은 본 발명의 실시 예에 따른 데이터 처리 시스템(2000)을 도시하는 블록도이다.
데이터 처리 시스템(2000)은 메인 프로세서(2100), 메인 메모리 장치(2200), 데이터 저장 장치(2300) 및 입출력 장치(2400)를 포함할 수 있다. 데이터 처리 시스템(2000)의 내부 유닛들은 시스템 버스(2500)를 통해서 데이터 및 제어 신호 등을 주고받을 수 있다.
메인 프로세서(2100)는 데이터 처리 시스템(2000)의 제반 동작을 제어할 수 있다. 메인 프로세서(2100)는, 예를 들어, 마이크로프로세서와 같은 중앙 처리 장치일 수 있다. 메인 프로세서(2100)는 운영 체제, 애플리케이션 및 장치 드라이버 등의 소프트웨어들을 메인 메모리 장치(2200) 상에서 수행할 수 있다. 메인 프로세서(2100)는 도1에 도시된 프로세서(100)과 실질적으로 유사하게 동작할 수 있다. 메인 프로세서(2100)는 코드를 구성하는 복수의 부분 코드들을 한번의 코드 로딩 동작을 통해 일시에 메인 메모리 장치(2200)로 로딩하지 않고, 데이터 처리 시스템(2000)의 동작 상태에 따라 복수의 코드 로딩 동작들을 통해 나누어 로딩할 수 있다. 메인 프로세서(2100)는 우선적으로 필요한 부분 코드를 먼저 로딩하고, 먼저 로딩된 부분 코드에 관련된 내부 동작을 수행하는 것과 병렬적으로 나머지 부분 코드들을 로딩할 수 있다.
메인 메모리 장치(2200)는 도1에 도시된 제2 메모리(300)와 같이, 메인 프로세서(2100)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 메인 메모리 장치(2200)는 데이터 저장 장치(2300) 및 입출력 장치(2400)로 전송될 데이터를 임시 저장할 수 있다.
데이터 저장 장치(2300)는 컨트롤러(2310) 및 저장 매체(2320)를 포함할 수 있다. 저장 매체(2320)는, 도1에 도시된 제1 메모리(200)와 같이, 메인 프로세서(2100)에 의해 로딩되는 코드를 저장할 수 있다.
입출력 장치(2400)는 사용자로부터 데이터 처리 시스템(2000)을 제어하기 위한 명령을 입력받거나 처리된 결과를 사용자에게 제공하는 등 사용자와 정보를 교환할 수 있는 키보드, 스캐너, 터치스크린, 스크린 모니터, 프린터 및 마우스 등을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(2000)은 LAN(Local Area Network), WAN(Wide Area Network) 및 무선 네트워크 등의 네트워크(2600)를 통해 적어도 하나의 서버(2700)와 통신할 수 있다. 데이터 처리 시스템(2000)은 네트워크(2600)에 접속하기 위해서 네트워크 인터페이스(미도시)를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 전자 장치
100: 프로세서
200: 제1 메모리
300: 제2 메모리
201: 코드

Claims (17)

  1. 각각이 하나 이상의 내부 동작들에 관련된 복수의 부분 코드들을 저장하는 제1 메모리; 및
    상기 복수의 부분 코드들을 상기 제1 메모리로부터 제2 메모리로 각각 로딩하도록 구성된 프로세서를 포함하되,
    상기 프로세서는 상기 제2 메모리로 로딩된 제1 부분 코드를 실행함으로써 상기 제1 부분 코드에 관련된 내부 동작을 수행하는 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는 상기 제1 부분 코드에 관련된 상기 내부 동작을 수행하는 것과 병렬적으로 제2 부분 코드를 상기 제1 메모리로부터 상기 제2 메모리로 로딩하는 전자 장치.
  3. 제2항에 있어서,
    상기 프로세서는 상기 제1 부분 코드에 관련된 상기 내부 동작을 수행하는 동안 상기 제2 부분 코드가 상기 제1 메모리의 메모리 영역으로부터 출력 버퍼로 리드되도록 제어하고, 상기 내부 동작이 완료되었을 때 상기 제2 부분 코드가 상기 출력 버퍼로부터 상기 제2 메모리로 출력되도록 제어하는 전자 장치.
  4. 제1항에 있어서,
    상기 프로세서는 유휴 상태로 진입했는지 여부를 판단하고, 유휴 상태로 진압한 것으로 판단될 때 제3 부분 코드를 상기 제1 메모리로부터 상기 제2 메모리로 로딩하는 전자 장치.
  5. 제1항에 있어서,
    상기 프로세서는 상기 복수의 부분 코드들에 대한 소정의 로딩 순서에 따라 상기 복수의 부분 코드들을 로딩하는 전자 장치.
  6. 제5항에 있어서,
    상기 프로세서는 외부의 요청에 따라 상기 소정의 로딩 순서에 무관하게, 상기 외부의 상기 요청에 관련된 제4 부분 코드를 상기 제1 메모리로부터 상기 제2 메모리로 로딩하는 전자 장치.
  7. 제6항에 있어서,
    상기 프로세서는 상기 제4 부분 코드가 로딩될 때까지 상기 외부의 상기 요청의 처리를 보류하는 전자 장치.
  8. 제1항에 있어서,
    상기 프로세서는 초기화 동작에 관련되는 제5 부분 코드를 최초로 로딩하는 전자 장치.
  9. 제1항에 있어서,
    상기 제1 메모리는 복수의 단위 메모리 영역들을 포함하고,
    상기 부분 코드들은 상기 부분 코드들 및 상기 단위 메모리 영역들의 크기들에 근거하여 상기 단위 메모리 영역들에 저장되는 전자 장치.
  10. 각각이 하나 이상의 내부 동작들에 관련된 복수의 부분 코드들을 제1 메모리로부터 제2 메모리로 각각 로딩하는 단계; 및
    상기 제2 메모리로 로딩된 제1 부분 코드를 실행함으로써 상기 제1 부분 코드에 관련된 내부 동작을 수행하는 단계를 포함하는 전자 장치의 동작 방법.
  11. 제10항에 있어서,
    상기 복수의 부분 코드들을 로딩하는 단계는,
    상기 제1 부분 코드에 관련된 상기 내부 동작을 수행하는 것과 병렬적으로 제2 부분 코드를 상기 제1 메모리로부터 상기 제2 메모리로 로딩하는 단계를 포함하는 전자 장치의 동작 방법.
  12. 제11항에 있어서,
    상기 제2 부분 코드를 로딩하는 단계는,
    상기 제1 부분 코드에 관련된 상기 내부 동작을 수행하는 동안 상기 제2 부분 코드가 상기 제1 메모리의 메모리 영역으로부터 출력 버퍼로 리드되도록 제어하는 단계; 및
    상기 내부 동작이 완료되었을 때 상기 제2 부분 코드가 상기 출력 버퍼로부터 상기 제2 메모리로 출력되도록 제어하는 단계를 포함하는 전자 장치의 동작 방법.
  13. 제10항에 있어서,
    상기 복수의 부분 코드들을 로딩하는 단계는,
    유휴 상태로 진입했는지 여부를 판단하는 단계; 및
    유휴 상태로 진입한 것으로 판단될 때 제3 부분 코드를 상기 제1 메모리로부터 상기 제2 메모리로 로딩하는 단계를 포함하는 전자 장치의 동작 방법.
  14. 제10항에 있어서,
    상기 복수의 부분 코드들을 로딩하는 단계는, 상기 복수의 부분 코드들에 대한 소정의 로딩 순서에 따라 상기 복수의 부분 코드들을 로딩하는 단계를 포함하는 전자 장치의 동작 방법.
  15. 제14항에 있어서,
    상기 복수의 부분 코드들을 로딩하는 단계는, 외부의 요청에 따라 상기 소정의 로딩 순서에 무관하게, 상기 외부의 상기 요청에 관련된 제4 부분 코드를 상기 제1 메모리로부터 상기 제2 메모리로 로딩하는 단계를 더 포함하는 전자 장치의 동작 방법.
  16. 제15항에 있어서,
    상기 제4 부분 코드가 로딩될 때까지 상기 외부의 상기 요청의 처리를 보류하는 단계를 더 포함하는 전자 장치의 동작 방법.
  17. 제10항에 있어서,
    상기 복수의 부분 코드들을 로딩하는 단계는, 초기화 동작에 관련되는 제5 부분 코드를 최초로 로딩하는 단계를 포함하는 전자 장치의 동작 방법.
KR1020160064140A 2016-05-25 2016-05-25 전자 장치 및 그것의 동작 방법 KR20170133116A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160064140A KR20170133116A (ko) 2016-05-25 2016-05-25 전자 장치 및 그것의 동작 방법
US15/249,117 US20170344260A1 (en) 2016-05-25 2016-08-26 Electronic device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160064140A KR20170133116A (ko) 2016-05-25 2016-05-25 전자 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20170133116A true KR20170133116A (ko) 2017-12-05

Family

ID=60417951

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160064140A KR20170133116A (ko) 2016-05-25 2016-05-25 전자 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US20170344260A1 (ko)
KR (1) KR20170133116A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115480835A (zh) * 2021-05-31 2022-12-16 合肥杰发科技有限公司 程序启动方法和设备、存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707354B2 (en) * 1999-08-04 2010-04-27 Super Talent Electronics, Inc. SRAM cache and flash micro-controller with differential packet interface
KR100909902B1 (ko) * 2007-04-27 2009-07-30 삼성전자주식회사 플래쉬 메모리 장치 및 플래쉬 메모리 시스템
JP5200085B2 (ja) * 2010-11-04 2013-05-15 レノボ・シンガポール・プライベート・リミテッド コンピュータを短時間で起動する方法およびコンピュータ
US9436480B1 (en) * 2013-11-08 2016-09-06 Western Digital Technologies, Inc. Firmware RAM usage without overlays
US10019351B2 (en) * 2014-06-30 2018-07-10 Cypress Semiconductor Corporation Booting an application from multiple memories

Also Published As

Publication number Publication date
US20170344260A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
US20240168635A1 (en) Extended utilization area for a memory device
US9396107B2 (en) Memory system having memory controller with cache memory and NVRAM and method of operating same
KR20170091389A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
US9898199B2 (en) Data storage device and operating method thereof
CN108108261B (zh) 数据存储装置及其操作方法
KR20200113992A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
US10649840B2 (en) Data storage device performing recovery operation after sudden power-off and operating method thereof
KR20160025292A (ko) 데이터 저장 장치, 그것을 포함하는 데이터 처리 시스템 및 그것의 동작 방법
KR20210051873A (ko) 컨트롤러 및 메모리 시스템
KR20210051921A (ko) 메모리 시스템 및 그것의 동작방법
KR20150100075A (ko) 메모리 및 컨트롤러를 포함하는 메모리 장치의 펌웨어를 업데이트하는 방법
KR20190030790A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20180093153A (ko) 데이터 저장 장치의 동작 방법
KR20170141298A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN107045484B (zh) 数据存储装置
KR20170139730A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20170133116A (ko) 전자 장치 및 그것의 동작 방법
US11922062B2 (en) Controller and operating method thereof
US10037151B2 (en) Data storage device performing pattern identification operation, operating method thereof, and data processing system including the same
KR20180081239A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN108509295B (zh) 存储器***的操作方法
KR20170045406A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102507769B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20190118428A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템