KR102159963B1 - 컴퓨터 시스템의 부팅 가속을 위한 시스템 및 방법 - Google Patents

컴퓨터 시스템의 부팅 가속을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102159963B1
KR102159963B1 KR1020130138456A KR20130138456A KR102159963B1 KR 102159963 B1 KR102159963 B1 KR 102159963B1 KR 1020130138456 A KR1020130138456 A KR 1020130138456A KR 20130138456 A KR20130138456 A KR 20130138456A KR 102159963 B1 KR102159963 B1 KR 102159963B1
Authority
KR
South Korea
Prior art keywords
host
memory device
data
memory
read command
Prior art date
Application number
KR1020130138456A
Other languages
English (en)
Other versions
KR20150011738A (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 US14/293,057 priority Critical patent/US9477484B2/en
Publication of KR20150011738A publication Critical patent/KR20150011738A/ko
Application granted granted Critical
Publication of KR102159963B1 publication Critical patent/KR102159963B1/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
    • 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/0646Configuration or reconfiguration
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

부팅 시간 전에 데이터를 보내기 위한 정보를 메모리 장치에 제공함으로써, 컴퓨터 시스템의 부팅 시간을 줄이는 시스템 및 방법이 제공된다. 상기 컴퓨터 시스템은 호스트 프로세서, 호스트 메모리, 호스트 컨트롤러, 메모리 장치를 포함한다.
상기 호스트 프로세서는 특정 데이터, 물리적 주소 및 데이터가 호스트 프로세서로 전달되어야 하는 특정 명령을 제공한다. 상기 메모리 장치는 호스트 시스템에 의하여, 리드 커맨드 및 호스트 메모리의 물리적 주소가 부팅 시 즉시 보내지도록 설계된다.
이러한 구성은 모든 부팅 전 또는 시스템 통합 시간에 마쳐질 수 있다. 일단 시스템에 전원이 들어오면, 메모리 장치는 데이터 인 패킷을 호스트 메모리로 보낸다. 호스트 프로세서가 데이터를 필요로 할 때마다, 데이터는 호스트 메모리 내에서 이용 가능할 수 있고, 이것은 상당한 부팅 시간을 줄일 수 있다.

Description

컴퓨터 시스템의 부팅 가속을 위한 시스템 및 방법{System and method for boot acceleration of a computer system}
본 발명은 데이터 저장장치에 관한 것이다. 구체적으로, 부팅 전에, 부팅 시간 동안 호스트가 원하는 데이터 및 부팅 시간 동안 전달되어야 하는 데이터가 속하는 호스트 메모리의 주소에 대한 정보를 메모리 장치에 전달함으로써, 컴퓨터 시스템의 부팅 시간 단축시키는 것에 관한 것이다.
대체적으로, 컴퓨터 시스템은 호스트 시스템을 포함하고, 호스트 시스템을 위한 메모리를 제공하기 위해 다양한 종류의 메모리 장치가 다양한 조합으로 사용된다. 예를 들어, 컴퓨터 시스템은 개인용 컴퓨터(PC), 노트북(laptop), 또는 핸드폰(mobile phone)으로 사용될 수 있다. 예를 들어, 컴퓨터 시스템은 호스트 시스템 및 호스트 시스템과 연결되는 외장 메모리 장치를 포함할 수 있다. 예를 들어, 외장 메모리 장치는 플래시 메모리 장치가 될 수 있다.
일반적으로, 호스트 시스템의 전원이 켜질 때, 파워온 초기화 순서(power-on initialization sequences)와 리드 IO 요청(Read Input Output (IO) requests)은 부트 로더(Boot Loader), 커널(Kernel), 파워온 어플리케이션(Power-on Applications), 메타데이터(Metadata), 그래픽 이미지(graphical images) 또는 그와 유사한 것과 같은 데이터를 얻기 위해, 비휘발성 보조 기억 장치로 전달된다.
부팅 시간 중 상당 부분은 현재 상기 호스트 시스템 내에 위치하는 보조 기억 장치로부터 호스트 프로세서가 명령을 실행시킬 수 있는 메인 메모리로 데이터를 불러오는데 소비된다.
핸드폰(Mobile Phones), 태블릿 피씨(Tablet PCs), 티비(TVs) 및 그밖의 장치들의 경우에, 일반적으로 이러한 장치들은 특정 저장 장치로부터 부팅될 수 있다. 부팅 시에, 특정 저장 장치 내의 특정 데이터는 메인 메모리의 특정 장소로 전달될 수 있고, 메모리 장치로부터 부팅하는 경우에 상기 파라미터 중 어떤 것도 바뀌지 않을 수 있다.
컴퓨터 시스템의 전원이 켜질 때마다, 시스템은 사용자가 시스템을 사용할 수 있을 때까지 미리 정해진 스텝을 행한다. 현재 시스템에서, 부팅 시 호스트 시스템이 데이터를 필요로 할 때마다, 호스트 소프트웨어는 물리적 영역 기술 테이블(PRDT)와 함께 리드 커맨드를 형성하고, 저장 호스트 컨트롤러(HCI)로 명령을 내린다. 저장 호스트 컨트롤러는 명령을 차례대로 상기 메모리 장치로 보낼 것이다. 이어서, 상기 메모리 장치는 낸드 어레이(NAND array)로부터 데이터를 읽고, 데이터 패킷을 형성하여, 그것을 저장 컨트롤러로 보낸다.
저장 호스트 컨트롤러는 PRDT와 같은 시스템의 물리적 메모리 주소로 데이터를 전달한다. 부팅 시/다음 부팅 시의 리드 커맨드의 작업은 보조 기억 장치로부터 읽어들이는 데 필요한 대기시간을 가질 것이다.
본 발명이 해결하려는 과제는, 부팅 시에 즉시 특정 데이터, 특정 주소 및 호스트 시스템으로 데이터를 전달해야 하는 특정 명령을 저장 장치에 전달함으로써, 컴퓨터 시스템의 부팅 시간을 줄이는 시스템 및 방법이 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 부팅 전에 데이터 패킷을 호스트 메모리로 전달하는 시스템과, 언제든지 필요할 때마다 호스트 메모리로부터 데이터를 가져오는 호스트 프로세서를 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 컴퓨터 시스템의 부팅 가속을 위한 시스템의 일 면(aspect)은, 컴퓨터 시스템의 부팅 시간(boot time)을 단축하는 시스템에 있어서, 상기 컴퓨터 시스템은 호스트 프로세서, 호스트 메모리, 호스트 컨트롤러, 메모리 장치를 포함하되, 상기 호스트 프로세서는 상기 부팅 시간 전에, 적어도 하나의 리드 커맨드와 상기 호스트 메모리의 물리적 주소를 상기 메모리 장치에 설정하고, 상기 메모리 장치가 상기 부팅 시간 동안 데이터를 불러오기 위한 상기 적어도 하나의 리드 커맨드를 처리한 후에, 상기 메모리 장치는 상기 호스트 메모리의 상기 물리적 주소로 데이터를 전달하고, 상기 호스트 프로세서는 상기 부팅 시간 동안 상기 호스트 메모리 안에 있는 상기 데이터를 가져온다.
또한, 상기 호스트 프로세서는 컴퓨터 시스템을 통합하는 동안, 상기 리드 커맨드를 상기 메모리 장치에 생성할 수 있다.
또한, 상기 메모리 장치는 상기 호스트 프로세서로부터 요청 받기 전에, 상기 부팅 시간 동안 데이터를 불러오기 위한 상기 적어도 하나의 리드 커맨드를 처리할 수 있다.
또한, 상기 호스트 프로세서는 상기 부팅 시간 동안 상기 리드 커맨드를 처리하기 위한 지시로써, 상기 부팅 시간 전에 상기 적어도 하나의 리드 커맨드와 상기 물리적 주소를 상기 메모리 장치에 설정할 수 있다.
또한, 상기 호스트 프로세서는 상기 부팅 시간 동안 부트 리드 커맨드를 통하여 상기 데이터의 전달을 시작하는 것을 상기 메모리 장치에 지시할 수 있다.
또한, 상기 데이터는 부트 데이터와, 상기 부팅 시간 동안 어플리케이션을 위해 필요한 데이터를 포함할 수 있다.
또한, 상기 메모리 장치는 전원이 들어온 후, 일부 초기화 후에 상기 적어도 하나의 리드 커맨드를 처리할 수 있다.
또한, 상기 메모리 장치는 상기 리드 커맨드의 실행 후에, 상기 호스트 메모리의 설정된 상기 물리적 주소와 함께 상기 데이터 패킷을 상기 호스트 컨트롤러로 보내고, 상기 호스트 컨트롤러는 DMA를 이용하여 상기 데이터 패킷을 상기 호스트 메모리의 상기 물리적 주소로 전달할 수 있다.
또한, 상기 메모리 장치는 데이터 패킷을 상기 호스트 메모리에 전달한 후에, 상기 호스트 프로세서에 의해 응답 데이터를 위해 설정된 물리적 주소로 상기 응답 데이터를 전달하고, 상기 응답 데이터는 상기 부팅 시간 동안 상기 호스트 메모리로 전달된 상기 데이터를 나타낼 수 있다.
또한, 상기 부팅 시간 동안 상기 호스트 프로세서가 상기 메모리 장치로부터 상기 데이터를 요청할 때, 상기 호스트 프로세서가 상기 적어도 하나의 리드 커맨드를 상기 메모리 장치로 보내기 전에, 상기 호스트 프로세서는 상기 호스트 메모리 내의 상기 적어도 하나의 리드 커맨드에 대한 상기 응답 데이터를 체크할 수 있다.
또한, 상기 시스템은 상기 메모리 장치로 리드 커맨드를 보내는 대신에, 필터 레이어를 사용하여 상기 부팅 시간 후에 복수의 리드 커맨드를 상기 호스트 메모리로 리디렉션하고, 상기 필터 레이어는 상기 복수의 리드 커맨드 및 상기 메모리 장치 내 설정된 상기 물리적 주소의 정보를 구비할 수 있다.
상기 과제를 해결하기 위한 본 발명의 컴퓨터 시스템의 부팅 가속을 위한 방법의 일 면은, 호스트 프로세서는 상기 부팅 시간 전에, 적어도 하나의 리드 커맨드와 호스트 메모리의 물리적 주소를 메모리 장치에 설정하고, 상기 메모리 장치가 상기 부팅 시간 동안 데이터를 불러오기 위한 상기 적어도 하나의 리드 커맨드를 처리한 후에, 상기 메모리 장치는 상기 호스트 메모리의 상기 물리적 주소로 데이터를 전달하고, 상기 호스트 프로세서는 상기 부팅 시간 동안 상기 호스트 메모리 안에 있는 상기 데이터를 가져온다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치와 연결된 호스트 시스템에 대한 도면이다.
도 2는 본 발명의 일 실시예에 따른 메모리 장치로부터 호스트 메모리로 데이터를 전달하는 과정을 설명하기 위한 순서도이다.
도 3은 본 발명의 다른 실시예에 따른 메모리 장치로부터 호스트 메모리로 데이터를 전달하는 과정을 설명하기 위한 순서도이다.
도 4는 본 발명의 또 다른 실시예에 따른 호스트 프로세서가 메모리 장치로부터 명령을 읽어오는 것을 설명하기 위한 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명의 일 실시예에 따르면, 부팅 시에 즉시 특정 데이터, 물리적 주소 및 호스트 시스템으로 데이터를 전달해야 하는 특정 명령을 저장 장치에 전달함으로써, 컴퓨터 시스템의 부팅 시간을 줄이는 시스템 및 방법을 나타낸다.
메모리 장치는 내장 메모리 장치 또는 외장 메모리 장치가 될 수 있다. 예를 들어, 내장 메모리 장치는 랜덤 엑세스 메모리(RAM)이 될 수 있고, 외장 메모리 장치는 플레시 메모리가 될 수 있다.
컴퓨터 시스템과 호스트 시스템이라는 용어를 통해 기술된 것은 서로 교환하여 사용될 수 있다.
장치와 메모리 장치라는 용어를 통해 기술된 것은 서로 교환하여 사용될 수 있다.
본 발명의 일 실시예에 따른 장치는 호스트 시스템과 연결된 외장 메모리 장치가 될 수 있다. 예를 들어, 외장 메모리 장치는 플래시 메모리 장치가 될 수 있다.
메모리 장치는 부팅 전, 호스트 시스템에 의해 호스트 메모리의 물리적 주소와 리드 커맨드가 형성될 수 있다. 이러한 구성은 모든 부팅 시간 전 또는 시스템 통합 시간에 마쳐질 수 있다.
전원이 켜져 있는 동안, 메모리 장치는 자체적으로 부분 초기화 및 미리 설정된 리드 커맨드의 실행을 시작할 것이다. 낸드 어레이(NAND array)로부터의 데이터를 읽고, 물리적 주소 정보와 함께 데이터 패킷과 응답 데이터를 호스트 컨트롤러로 보낸다(일단 호스트 컨트롤러는 부분적으로 초기화된다).
호스트 컨트롤러는 호스트 프로세서를 방해하지 않고 물리적 주소를 형성하여, 메모리 장치로부터 받은 데이터 패킷 상의 데이터를 호스트 메모리로 직접 전달한다.
우선 리드 커맨드에 따른 특정 데이터가 전달되면, 메모리 장치는 호스트 시스템에 의해 형성되고, 데이터가 전달된 것을 나타내는 응답 데이터를 위한 특정 물리적 주소로 응답 데이터를 전달한다.
호스트 시스템이 메모리 장치로부터 어떤 데이터를 원할 때마다, 호스트 시스템은 우선 설정된 리드 커맨드에 대한 응답 데이터를 체크하고, 메모리 장치를 대신하여 호스트 메모리에서 요구를 처리한다.
호스트 시스템은 호스트 시스템의 요구와 자원의 이용가능성을 바탕으로, 메모리 장치에 물리적 주소와 리드 커맨드를 형성한다.
부팅 시간을 단축하는 방법은 부팅의 여러 단계를 피하는 것을 개시한다. 메모리 장치는 협동 프로세서(co-processor)로서 동작하고, 부팅 시간을 줄이기 위해 호스트 시스템이 원하는 데이터를 즉시 호스트 메모리에 전달한다.
메모리 장치로 보내진 리드 커맨드는 최소한으로 줄어들 것이고, 앞으로 단방향 데이터 트래픽에 가까워질 것이다(장치에서 호스트 시스템으로 향하는 방향).
이 경우에서, 전송 데이터 레인(Tx)과 수신 데이터 레인(Rx)을 형성하는 것과 같은 최적화는 부트 데이터 전송을 더 빠르게 할 수 있다. (두 배의 속도로)
본 발명의 일 실시예에서, 부팅 후의 호스트 시스템에 의한 모든 리드 요청은 메모리 장치에 의해 이미 데이터가 전달된 호스트 메모리에 리디렉션(redirected)될 수 있다. 이것은 모든 리드 커맨드와 메모리 장치에서 형성된 물리적 주소를 알고 있는 호스트 시스템 내에서, 필터 레이어에 의해 실행될 수 있다.
도 1 내지 도 4를 참조하면 동일 참조 부호는 동일 구성 요소를 지칭한다.
호스트 메모리와 램(RAM)라는 용어를 통해 기술된 것은 서로 서로 교환하여 사용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치와 연결된 호스트 시스템에 대한 도면이다.
도 1을 참조하면, 호스트 시스템(100)은 롬 바이어스(101; ROM BIOS), 호스트 프로세서(102), 호스트 메모리(103; host Random Access Memory)과 저장 호스트 컨트롤러(104), DMA(105; Direct Memory Access)와 저장 호스트 컨트롤러(104)를 포함한다.
호스트 시스템(100)은 모든 통신 모듈을 통과하는 시스템 버스(106)를 포함할 수 있다. 메모리 장치(107)는 저장 호스트 컨트롤러(104)를 통해 호스트 시스템(100)과 연결될 수 있다. 호스트 시스템(100)은 부팅 전에 메모리 장치(107)에 리드 커맨드를 형성할 수 있다. 부팅 순서가 특정됨에 따라, 호스트 시스템(100)이 메모리 장치(107)에 형성한 리드 커맨드의 명령도 특정될 수 있다. 리드 커맨드는 부팅 시 호스트 시스템(100)에 의해 보내진 물리적 주소(호스트 램의 목적지 주소)와 함께, 부팅 전 또는 장치 설정 시에 즉시 메모리 장치(107)와 공유될 수 있다.
각각의 리드 커맨드와 공유되는 물리적 주소는 다른 주소들과 겹치지 않아야 한다. 또한, 메모리 장치(107) 내의 실행되어야 하는 리드 커맨드의 순서는 호스트 시스템(100)에 의해 형성된다. 일단 메모리 장치(107)에 전원이 들어오면, 부분 초기화가 종료된 후에, 호스트 시스템(100)으로부터의 어떠한 지시도 기다리지 않고 리드 커맨드는 실행될 것이다.
메모리 장치(107)는 낸드 어레이로부터 데이터를 불러오고, 리드 커맨드와 함께 설정되는 물리적 주소(호스트 메모리의 목적지 주소)와 함께 데이터 패킷을 형성하고. 그것을 저장 호스트 컨트롤러(104)로 전송한다.
저장 호스트 컨트롤러(104)는 패킷을 받고, 물리적 주소 및 데이터와 함께 DMA(105)를 설정한다. 데이터는 호스트 메모리(103; RAM)로 전송될 것이고, 다르게 설정된 리드 커맨드는 동일한 과정을 따른다. 만약 실패하는 경우, 각각의 리드 커맨드는 여러 차례 시도할 것이다. 시도의 횟수는 호스트 시스템(100)에 의한 장치 설정에 따를 것이다.
앞에서 언급한 단계 이전에, 장치 저장 호스트 컨트롤러(104)는 호스트 메모리(103)가 초기화되었는지 확인할 것이다.
일단, 호스트 시스템(100)이 호스트 메모리(103)를 초기화하면, 호스트 시스템(100)은 데이터 전송을 시작하기 위해 저장 호스트 컨트롤러(104)에 지시을 전달할 수 있다. 또는, 저장 호스트 컨트롤러(104)는 호스트 메모리 초기화를 위한 조사를 할 수 있다.
모든 리드 커맨더를 위해, 메모리 장치(107)는 호스트 메모리(103)의 특별 물리적 주소(응답에 의해 형성된)로 전달될 수 있는 응답을 보낼 수 있다.
상기 데이터 전송 시퀀스에서, 호스트 프로세서(102)는 방해 받지 않고, 이는 각각의 명령이 완료된 후에도 마찬가지이다. 따라서, 호스트 프로세서(102)는 계속해서 다른 주변장치의 초기화를 할 수 있다. 호스트 시스템(102)이 데이터를 필요로 할 때마다, 호스트 프로세서(102)는 각각의 응답이 있는지 체크할 것이다.(응답은 호스트 메모리(103) 내의 특별 물리적 공간에 저장될 것이다). 그리고 만약 응답이 있다면, 그것은 데이터가 이미 호스트 메모리(103) 내에서 이용가능하다는 것을 의미한다. 저장 호스트 장치(104)내의 모든 데이터 버퍼(data buffer)와 캐시(cache) 그리고 메모리 장치(107)는 부팅 시 효과적으로 사용되고, 따라서, 데이터 전송은 오직 단 방향으로 이루어질 수 있다(장치에서 호스트 시스템 방향, 단방향 데이터 전송).
도 2는 본 발명의 일 실시예에 따른 메모리 장치로부터 호스트 메모리로 데이터를 전달하는 과정을 설명하기 위한 순서도이다.
도 2를 참조하면, 리드 커맨드와 호스트 메모리(103)의 물리적 주소는 메모리 장치(107) 내에 미리 설정된다. 도면은 호스트 프로세서(102), 호스트 컨트롤러(104) 및 메모리 장치(107)를 나타낸다. 호스트 시스템(100)에 전원이 들어오면, 호스트 프로세서(102)와 호스트 램(103)은 롬 바이어스(ROM BIOS) 코드로부터 초기화한다(201).
본 발명의 일 실시예에 따르면, 바이어스 코드는 롬 또는 내장 램으로부터 원낸드(OneNAND) 컨셉과 같은 저장 호스트 컨트롤러(104)로 실행될 수 있다.
이어서, 저장 호스트 컨트롤러(104)는 부분 초기화하고(202), 메모리 장치(107)는 스스로 부분 초기화한다(203). 리드 커맨드는 메모리 장치(107) 내에 미리 설정되기 때문에, 메모리 장치(107)는 설정된 리드 커맨드의 실행을 시작한다. 메모리 장치(107)는 낸드 어레이로부터 데이터를 읽고(204), 호스트 컨트롤러(104)로 데이터를 보내기 위한 준비를 한다.
실질적으로 데이터를 전송하기 전에, 메모리 장치(107)와 호스트 컨트롤러(104)는 링크를 형성한다(205). 이어서, 호스트 프로세서(102)는 롬 바이어스(101)로부터 호스트 컨트롤러(104)를 초기화한다(206). 이어서, 메모리 장치는 64비트 물리적 주소와 함께 데이터 인 패킷(data-in packets)을 호스트 컨트롤러(104)로 보낸다(207). 이어서, 호스트 컨트롤러(104)는 데이터 내에서 언급된 호스트 메모리 주소로 데이터를 전송한다(208).
이와 유사하게, 메모리 장치(107)는 다른 데이터를 설정된 물리적 주소와 함께 호스트 컨트롤러(104)로 전달한다(209). 메모리 장치(107)는 호스트 메모리(103)의 64비트 물리적 주소와 함께 데이터 인 패킷을 호스트 컨트롤러(104)로 전달한다(210). 이어서, 호스트 컨트롤러(104)는 데이터를 호스트 메모리(103)의 물리적 주소로 전달한다(211). 호스트 시스템(100)이 데이터를 필요로 하면, 호스트 프로세서(102)는 데이터를 호스트 메모리(103; RAM)으로부터 읽어오고, 이것은 계속해서 메모리 장치(107)로부터의 리드 IO를 줄인다. 각각의 리드 커맨드는 실패하는 경우 여러 차례 시도될 것이다. 시도의 횟수는 호스트 시스템(100)에 의한 메모리 장치(107) 설정을 기초로 할 것이다.
예를 들어, T0의 시간에, 호스트 시스템(100)은 전원이 들어온다. 호스트 프로세서(102)는 바이어스 코드를 실행하고, 호스트 메모리(103)와 시스템 버스(106)를 초기화한다. 이와 동시에, 메모리 장치(107)는 스스로 부분 초기화하고, 설정된 리드 커맨드의 실행을 시작한다. 이어서, T1의 시간에, 호스트 프로세서(102)는 바이어스 코드를 실행하고, 다른 주변 장치를 초기화 하거나, 메모리 장치(107)로부터 데이터를 기다린다. 동시에, 메모리 장치(107)는 데이터를 호스트 메모리(103)의 설정된 물리적 주소에 전달하고, 성공에 대한 응답을 전달한다.
T2의 시간에, 호스트 프로세서(102)는 호스트 메모리(103)로부터 부팅 코드를 실행하고. 다른 주변장치를 초기화한다. 동시에, 메모리 장치(107)는 호스트 메모리(103)의 설정된 물리적 주소에 데이터를 전달하고, 성공에 대한 응답을 전달한다.
T3의 시간에, 호스트 프로세서(102)는 호스트 메모리로부터 커널 코드를 실행하고, 다른 주변장치를 초기화 한다. 동시에, 메모리 장치(107)는 호스트 메모리(103)의 설정된 물리적 주소로 데이터 전송을 마친다. 모든 리드 IO는 호스트 메모리(103)로 리디렉션되고, 이미 호스트 메모리(103)의 데이터는 호스트 시스템(100) 내의 필터 레이어를 이용함으로써 이용 가능하다.
본 발명의 일 실시예에 따르면, 호스트 시스템(100)은 커널 이미지뿐만 아니라 리드 커맨드도 설정할 수 있다. 일단 커널이 올라오면, 커널은 파일 시스템의 메타 데이터, 그래픽 이미지 및 몇몇 어플리케이션의 바이너리와 같은 데이터를 필요로 하고, 데이터 베이스는 호스트 시스템(100)이 동작을 시작한 후에, 실행을 필요로 하는 시작 어플리케이션을 위해 요구된다.
여기에는 두가지 종류의 설정이 있을 수 있다. 제1 타입은 커널 코드를 위해 한번 설정 가능한 리드 커맨드 또는 그와 유사한 것이고, 제2 타입은 어플리케이션 데이터, 메타 데이터 또는 그와 유사한 것을 위해 여러 번 설정 가능한 리드 커맨드이다.
본 발명의 일 실시예에 따르면, 전원을 켰을 때 호스트 시스템(100)이 원하는 모든 데이터는 우선권을 지닌 메모리 장치(107) 내의 리드 커맨드로서 설정 될 수 있다.
도 3은 본 발명의 다른 실시예에 따른 메모리 장치로부터 호스트 메모리로 데이터를 전달하는 과정을 설명하기 위한 순서도이다.
도 3를 참조하면, 아이디어의 핵심은 부팅 전에 메모리 장치(107)에 부트 코드(소스와 목적지 주소)에 대한 정보를 제공하는 것에 있다. 따라서, 메모리 장치(107)는 즉시 호스트 메모리(103)로 데이터를 전달할 수 있다. 리드 커맨드와 데이터 버퍼 오프셋(data buffer offsets)은 시스템 통합(system integration) 시 설정된다. 메모리 장치(107)가 데이터 전달을 시작하는 대신에, 호스트 프로세서(102)는 부팅 시간 동안, 리드 커맨드를 설정하기 위한 관련 데이터의 전송을 시작하라는 지시로써, 부트 리드 커맨드(BOOT READ command)를 메모리 장치(107)로 보낼 것이다. 도면은 호스트 프로세서(102), 호스트 컨트롤러(104) 및 메모리 장치(107)를 나타낸다. 호스트 시스템(100)에 전원이 들어오면, 호스트 프로세서(102)와 호스트 메모리(103)는 롬 바이어스(ROM BIOS) 코드로부터 초기화한다(301).
이어서, 저장 호스트 컨트롤러(104)는 부분 초기화하고(302), 메모리 장치(107)는 스스로 부분 초기화한다(303). 리드 커맨드는 메모리 장치(107) 내에 미리 설정되기 때문에, 메모리 장치(107)는 설정된 리드 커맨드의 실행을 시작한다. 메모리 장치(107)는 낸드 어레이로부터 데이터를 읽고(304), 호스트 컨트롤러(104)로 데이터를 보내기 위한 준비를 한다.
실질적으로 데이터를 전송하기 전에, 메모리 장치(107)와 호스트 컨트롤러(104)는 링크를 형성한다(305). 이어서, 호스트 프로세서(102)는 롬 바이어스(101)로부터 호스트 컨트롤러(104)를 초기화한다(306). 이어서, 호스트 프로세서(102)는 부트 리드 커맨드(BOOT READ command)를 물리적 주소와 함께 호스트 컨트롤러(104)로 보낸다(307). 이어서, 호스트 컨트롤러(104)는 리드 커맨드(READ command)를 메모리 장치(107)로 보낸다(308).
본 발명의 일 실시예에 따르면, 부트 리드 커맨드는 물리적 베이스 주소(Physical Base Address)와 라지 데이터 전달 길이(large data transfer length)(예를 들어, 500MB)를 가지는 물리적 주소 테이블(하나의 엔트리(entry))과 함께 전달된다.
이 부트 리드 커맨드는 설정된 리드 커맨드를 위해 데이터 인 패킷의 전달을 시작하기 위한 메모리 장치(107)에 대한 지시로써 동작한다. 이어서, 메모리 장치(107)는 데이터 인 패킷을 설정된 데이터 버퍼 오프셋과 함께 호스트 컨트롤러(104)에 보낸다(309). 호스트 컨트롤러(104)는 DMA 내의 데이터를 호스트 메모리(103)로 전달한다(310)(기존의 프로토콜에 따라).
이와 유사하게, 메모리 장치(107)는 다른 데이터를 설정된 물리적 주소와 함께 호스트 컨트롤러(104)로 전달한다(311). 메모리 장치(107)는 데이터 인 패킷을 호스트 메모리(103)의 64비트 물리적 주소와 함께 호스트 컨트롤러(104)로 전달한다(312). 이어서, 호스트 컨트롤러(104)는 데이터를 호스트 메모리(103)의 물리적 주소로 전달한다(313). 호스트 시스템(100)이 데이터를 원하는 경우, 호스트 프로세서(102)는 데이터를 호스트 메모리(103; RAM)으로부터 읽어오고, 이것은 계속해서 메모리 장치(107)로부터의 리드 IO를 줄인다.
예를 들어, T0의 시간에, 호스트 시스템(100)은 전원이 들어온다. 호스트 프로세서(102)는 바이어스 코드를 실행하고, 호스트 메모리(103)가 시스템 버스(106)를 초기화 하고, 메모리 장치(107)로 부트 리드 커맨드를 전달한다. 부트 리드 커맨드에 응답하여 메모리 장치(107)는 미리 설정된 리드 커맨드 과정를 시작한다. 부트 리드 커맨드는 하나의 엔트리(entry)의 물리적 주소 테이블과 함께 보내진다. 물리적 베이스 주소 와 라지 데이터 전송 길이는 메모리 장치(107)를 위해 구체화 되고, 이는 부팅 시간 동안 미리 설정된 리드 커맨드를 통해 데이터 전송을 시작할 것을 지시한다.
이어서, T1의 시간에, 호스트 프로세서(102)는 바이어스 코드를 실행하고, 다른 주변 장치를 초기화 하거나, 메모리 장치(107)로부터 데이터를 기다린다. 동시에, 메모리 장치(107)는 호스트 메모리(103)의 설정된 데이터 버퍼 오프셋으로 데이터를 전달하고, 성공에 대한 응답을 전달한다(데이터 패킷의 형식 내에서).
T2의 시간에, 호스트 프로세서(102)는 호스트 메모리(103)로부터 부트 코드를 실행하고. 다른 주변장치를 초기화한다. 동시에, 메모리 장치(107)는 호스트 메모리(103)의 설정된 물리적 주소(데이터 버퍼 오프셋)에 데이터를 전달하고, 성공에 대한 응답을 전달한다.
T3의 시간에, 호스트 프로세서(102)는 호스트 메모리로부터 커널 코드를 실행하고, 다른 주변장치를 초기화 한다. 동시에, 메모리 장치(107)는 호스트 메모리(103)의 설정된 물리적 주소(데이터 버퍼 오프셋)로 데이터 전송을 마친다. 모든 리드 IO는 호스트 메모리(103)로 리디렉션되고, 이미 호스트 메모리(103)의 데이터는 이용가능하다.
도 4는 본 발명의 또 다른 실시예에 따른 호스트 프로세서가 메모리 장치로부터 명령을 읽어오는 것을 설명하기 위한 순서도이다.
도 4를 참조하면, 호스트 시스템(100)과 메모리 장치(107)를 나타낸다. T0의 시간에, 호스트 시스템(100)은 메모리 장치(107)를 초기화한다(401). 이어서, 메모리 장치(107)는 설정된 리드 커맨드의 데이터 인 패킷을 호스트 메모리(103)로 보낸다. T1, T2 및 T3 의 시간에 호스트 시스템(100)은 호스트 메모리(103)으로부터 데이터를 읽기를 시도한다. 호스트 시스템(100)의 상부 레이어로부터 온 리드 요청은 호스트 메모리(103)로 리디렉션 될 것이다. 예를 들어, 리드 커맨드(2) 의 데이터는 이미 호스트 메모리(103) 내에서 이용 가능하다. 따라서, 호스트 프로세서(102)는 리드 커맨드(2) 의 데이터를 메모리 장치(107)보다는 호스트 메모리(103)으로부터 읽는다.
본 발명의 일 실시예에 따르면, 메모리 장치(107)는 장치 캐쉬(device cache) 내에 데이터를 미리 불러오고, 저장할 수 있다. 따라서, 메모리 장치(107)는 어떤 데이터가 전송되어야 하는지 즉시 알 수 있다. 데이터가 전송 될 때, 호스트 프로세서(102)는 다른 주변장치를 동시에 초기화 할 수 있고, 메모리 장치(107)로부터 어떤 데이터가 필요할 경우, 리드 IO를 보낼 필요가 없이 데이터를 기다린다. 데이터는 이미 호스트 메모리(103) 내에서 이용가능하다.
예를 들어, 핸드폰 내의 주소록(contacts)을 로딩하는 것과 같은 어플리케이션은 이미 핸드폰 장치의 램 안에 있는 데이터를 이용하는 것이 가능하기 때문에, 더 빨라질 수 있다.
예를 들어, 제시된 방법은 유니버셜 플래시 장치(UFS; Universal Flash Storage), 또는 유사한 프로토콜과 같은 시스템에 적용할 수 있고, 상기 프로토콜은 저장 시스템의 일부로서의 메모리 장치 컨트롤러와 저장 호스트 컨트롤러가 될 수 있다.
본 발명의 몇몇 실시예는 적어도 하나의 하드웨어에서 운영되는 적어도 하나의 소프트웨어 프로그램을 통해 실행될 수 있다. 도 1내지 4에 포함된 구성요소는 적어도 하나의 하드웨어 장치 또는 하드웨어 장치와 소프트웨어 모듈의 조합이 될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트 시스템 101: 롬 바이어스
102: 호스트 프로세서 103: 호스트 메모리
104: 호스트 컨트롤러 105: DMA
106: 시스템 버스 107: 메모리 장치

Claims (12)

  1. 컴퓨터 시스템의 부팅 시간(boot time)을 단축하는 시스템에 있어서, 상기 컴퓨터 시스템은 호스트 프로세서, 호스트 메모리, 호스트 컨트롤러, 메모리 장치를 포함하되,
    상기 호스트 프로세서는 상기 컴퓨터 시스템의 부팅 전에, 적어도 하나의 리드 커맨드와 상기 호스트 메모리의 물리적 주소를 상기 메모리 장치에 설정하고,
    상기 메모리 장치가 상기 부팅 시간 동안 데이터를 불러오기 위한 상기 적어도 하나의 리드 커맨드를 처리한 후에, 상기 메모리 장치는 상기 호스트 메모리의 상기 물리적 주소로 데이터를 전달하고,
    상기 호스트 프로세서는 상기 부팅 시간 동안 상기 호스트 메모리 안에 있는 상기 데이터를 가져오는 시스템.
  2. 제1 항에 있어서,
    상기 호스트 프로세서는 컴퓨터 시스템을 통합(system integration)하는 동안, 상기 리드 커맨드를 상기 메모리 장치에 설정하는 시스템.
  3. 제1 항에 있어서,
    상기 메모리 장치는 상기 호스트 프로세서로부터 요청 받기 전에, 상기 부팅 시간 동안 데이터를 불러오기 위한 상기 적어도 하나의 리드 커맨드를 처리하는 시스템.
  4. 제1 항에 있어서,
    상기 호스트 프로세서는 상기 부팅 시간 동안 상기 리드 커맨드를 처리하기 위한 지시로써, 상기 부팅 시간 전에 상기 적어도 하나의 리드 커맨드와 상기 물리적 주소를 상기 메모리 장치에 설정하는 시스템.
  5. 삭제
  6. 삭제
  7. 제1 항에 있어서,
    상기 메모리 장치는 전원이 들어온 후, 일부 초기화 후에 상기 적어도 하나의 리드 커맨드를 처리하는 시스템.
  8. 제1 항에 있어서,
    상기 메모리 장치는, 상기 리드 커맨드의 실행 후에, 상기 호스트 메모리의 설정된 상기 물리적 주소와 함께 데이터 패킷을 상기 호스트 컨트롤러로 보내고,
    상기 호스트 컨트롤러는, DMA를 이용하여, 상기 데이터 패킷을 상기 호스트 메모리의 상기 물리적 주소에 전달 하는 시스템.
  9. 제1 항에 있어서,
    상기 메모리 장치는 데이터 패킷을 상기 호스트 메모리에 전달한 후에, 상기 호스트 프로세서에 의해, 응답 데이터를 위해 설정된 물리적 주소로 상기 응답 데이터를 전달하고,
    상기 응답 데이터는 상기 부팅 시간 동안 상기 호스트 메모리로 전달된 상기 데이터를 상기 호스트 메모리로 전달된 상기 데이터인 시스템.
  10. 제9 항에 있어서,
    상기 부팅 시간 동안 상기 호스트 프로세서가 상기 메모리 장치로부터 상기 데이터를 요청할 때, 상기 호스트 프로세서가 상기 적어도 하나의 리드 커맨드를 상기 메모리 장치로 보내기 전에, 상기 호스트 프로세서는 상기 호스트 메모리 내의 상기 적어도 하나의 리드 커맨드에 대한 상기 응답 데이터를 체크하는 시스템.
  11. 제1 항에 있어서,
    상기 시스템은 상기 메모리 장치로 리드 커맨드를 보내는 대신에, 필터 레이어를 사용하여 상기 부팅 시간 후에 복수의 리드 커맨드를 상기 호스트 메모리로 리디렉션하고,
    상기 필터 레이어는 상기 복수의 리드 커맨드 및 상기 메모리 장치 내 설정된 상기 물리적 주소의 정보를 구비하는 시스템.
  12. 호스트 프로세서가 상기 호스트 프로세서를 포함하는 컴퓨터 시스템의 부팅 전에, 적어도 하나의 리드 커맨드와 호스트 메모리의 물리적 주소를 메모리 장치에 설정(configuring)하고,
    상기 메모리 장치가, 부팅 시간 동안 데이터를 불러오기(fetch) 위한 상기 적어도 하나의 리드 커맨드를 처리한 후에, 상기 메모리 장치가 상기 호스트 메모리의 상기 물리적 주소로 데이터를 전달(transferring)하고,
    상기 호스트 프로세서가, 상기 부팅 시간 동안, 상기 호스트 메모리 내의 상기 데이터를 가져오는(retrieving) 것을 포함하는 컴퓨터 시스템의 부팅 시간을 단축하는 방법.
KR1020130138456A 2013-07-23 2013-11-14 컴퓨터 시스템의 부팅 가속을 위한 시스템 및 방법 KR102159963B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/293,057 US9477484B2 (en) 2013-07-23 2014-06-02 System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN3260CH2013 2013-07-23
IN3260/CHE/2013 2013-07-23

Publications (2)

Publication Number Publication Date
KR20150011738A KR20150011738A (ko) 2015-02-02
KR102159963B1 true KR102159963B1 (ko) 2020-09-28

Family

ID=52488072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130138456A KR102159963B1 (ko) 2013-07-23 2013-11-14 컴퓨터 시스템의 부팅 가속을 위한 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102159963B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169558A1 (en) * 2007-07-31 2010-07-01 Toshiyuki Honda Nonvolatile memory device and nonvolatile memory system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169558A1 (en) * 2007-07-31 2010-07-01 Toshiyuki Honda Nonvolatile memory device and nonvolatile memory system

Also Published As

Publication number Publication date
KR20150011738A (ko) 2015-02-02

Similar Documents

Publication Publication Date Title
KR101798369B1 (ko) 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법
KR100642045B1 (ko) 호스트 프로세서로부터 멀티미디어 프로세서로 멀티미디어프로그램을 다운로드하는 시스템 및 방법
EP2609499B1 (en) Electronics device
JP6228177B2 (ja) コンピュータシステムにおけるオペレーティングシステムの通信ネットワーク経由でのロードおよびブートを最適化するための方法、コンピュータプログラム、および装置
US10860332B2 (en) Multicore framework for use in pre-boot environment of a system-on-chip
EP2550603B1 (en) Direct scatter loading of executable software image from a primary processor to one or more secondary processors in a multi-processor system
US20190347227A1 (en) Real-time embedded system
US10037170B2 (en) Motherboard and a method for boot-up
US9477484B2 (en) System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
WO2013154541A1 (en) Remote direct memory access with reduced latency
WO2008138258A1 (fr) Procédé d'exploitation de dispositif périphérique, dispositif périphérique et hôte
WO2019182335A1 (ko) 전자 장치 및 전자 장치의 업데이트 제어 방법
US11675621B2 (en) Method for controlling execution of application, electronic device and storage medium for the same
US20110179261A1 (en) Method for controlling network controller, non-transitory computer readable recording medium, and information processing apparatus
WO2023226720A1 (zh) 资源文件的传输方法、装置、设备及存储介质
WO2013154540A1 (en) Continuous information transfer with reduced latency
JP6050528B2 (ja) セキュリティ・コプロセッサ・ブート性能
US20160266912A1 (en) External devices, electronic devices, methods for starting external devices, and methods for data processing
KR102159963B1 (ko) 컴퓨터 시스템의 부팅 가속을 위한 시스템 및 방법
US7945919B2 (en) Information processing apparatus and device controller driving/controlling method
CN115729633A (zh) 主从式多处理器系统的控制方法、装置和计算机设备
CN106922189B (zh) 设备代理装置及其控制方法
WO2022036670A1 (en) Methods and apparatus to perform an enhanced s3 protocol to update firmware with a boot script update
CN106354514B (zh) 一种快速引导申威处理器bios的方法
US9418038B2 (en) Method and system for accessing data

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