KR101583002B1 - 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 - Google Patents
컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 Download PDFInfo
- Publication number
- KR101583002B1 KR101583002B1 KR1020090014949A KR20090014949A KR101583002B1 KR 101583002 B1 KR101583002 B1 KR 101583002B1 KR 1020090014949 A KR1020090014949 A KR 1020090014949A KR 20090014949 A KR20090014949 A KR 20090014949A KR 101583002 B1 KR101583002 B1 KR 101583002B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- code
- boot
- main memory
- storage device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
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
본 발명은 컴퓨팅 시스템, 그것의 부팅 방법 및 코드 데이터 피닝 방법에 관한 것이다.
최근, 휘발성 메모리들과 불 휘발성 메모리들과 같은 저장 장치들의 응용들이 MP3 플레이어, PMP, 휴대전화, 노트북 컴퓨터, PDA, 등과 같은 모바일 기기들에 급속히 확산되고 있다. 그러한 모바일 기기들은 다양한 기능들 (예를 들면, 동영상 재상 기능)을 제공하기 위해서 점차적으로 대용량의 저장 장치들을 필요로 하고 있다. 그러한 요구를 충족하기 위한 다양한 노력들이 행해져오고 있다.
본 발명의 목적은 부팅 속도를 줄이고, 전력 소모를 줄일 수 있는 컴퓨팅 시스템 및 그것의 부팅 방법을 제공하는데 있다.
본 발명에 따른 컴퓨팅 시스템의 부팅 방법은, 메인 메모리에 운영 시스템의 부트 데이터가 피닝되어 있는지 확인하는 단계, 상기 피닝된 부트 데이터의 재할당이 필요할 때, 저장 장치로부터 부트 데이터를 읽어와 상기 메인 메모리로 피닝 동작을 수행하는 단계, 및 상기 피닝된 부트 데이터를 이용하여 부팅하는 단계를 포함한다.
실시 예에 있어서, 상기 메인 메모리는 현지실행(XIP) 기능을 수행한다.
실시 예에 있어서, 상기 메인 메모리는 상기 컴퓨팅 시스템의 작업시 필요한 데이터를 임시로 저장하는 워킹 램을 더 포함한다.
실시 예에 있어서, 상기 피닝 동작을 수행하는 단계는, 상기 저장 장치로부터 부트 데이터를 읽는 단계; 및 상기 읽혀진 부트 데이터를 피닝할 지를 판별하는 단계를 포함한다.
실시 예에 있어서, 상기 피닝 동작을 수행하는 단계는, 상기 피닝된 정보를 상기 메인 메모리에 저장하는 단계를 포함한다.
본 발명에 따른 컴퓨팅 시스템의 코드 데이터 피닝 방법은, 저장 장치에 저장된 코드 데이터를 읽어오는 단계, 읽혀진 코드 데이터가 재할당 가능한지 판별하는 단계, 상기 읽혀진 코드 데이터가 재할당이 가능하다면, 상기 읽혀진 코드 데이터를 동작 속도와 전력 소비를 고려하여 메인 메모리에 피닝할 지를 판별하는 단계, 및 상기 판별결과로써 상기 읽혀진 코드 데이터를 상기 메인 메모리에 피닝하는 단계를 포함한다.
본 발명에 따른 컴퓨팅 시스템, 중앙처리장치, 상기 중앙처리장치에 직접 접근하는 장치들을 상기 중앙처리장치에 연결하기 위한 노스 브릿지, 상기 노스 브릿지에 연결되고, 상기 중앙처리장치의 동작을 수행하는데 사용되는 데이터를 저장하는 메인 메모리, 상기 노스 브릿지에 연결되고, 상기 중앙처리장치에 간접 접근하는 장치들을 연결하기 위한 사우스 브릿지, 및 상기 사우스 브릿지에 연결되고, 사용자의 데이터를 저장하고 및 코드 혹은 데이터를 저장하는 저장 장치를 포함하되, 상기 메인 메모리는, 상기 저장 장치에 저장된 코드 데이터가 피닝되고, 상기 피닝된 코드 데이터가 XIP 되는 비휘발성 메모리를 포함한다.
실시 예에 있어서, 상기 비휘발성 메모리는 피램이고, 상기 메인 메모리는 상기 데이터를 임시로 저장하기 위한 디램을 더 포함한다.
실시 예에 있어서, 상기 피램 및 상기 디램은 동일한 인터페이스로 인터페이싱을 수행한다.
실시 예에 있어서, 상기 컴퓨팅 시스템의 하이버네이션 동작시 상기 디램에 있는 데이터만 상기 저장 장치로 백업하고, 상기 백업된 데이터를 다시 디램에 복원한다.
실시 예에 있어서, 상기 메인 메모리는 현지실행(XIP) 기능을 수행한다.
실시 예에 있어서, 상기 메인 메모리는 상기 컴퓨팅 시스템의 작업시 필요한 데이터를 임시로 저장하는 워킹 램을 더 포함한다.
실시 예에 있어서, 상기 피닝 동작을 수행하는 단계는, 상기 저장 장치로부터 부트 데이터를 읽는 단계; 및 상기 읽혀진 부트 데이터를 피닝할 지를 판별하는 단계를 포함한다.
실시 예에 있어서, 상기 피닝 동작을 수행하는 단계는, 상기 피닝된 정보를 상기 메인 메모리에 저장하는 단계를 포함한다.
본 발명에 따른 컴퓨팅 시스템의 코드 데이터 피닝 방법은, 저장 장치에 저장된 코드 데이터를 읽어오는 단계, 읽혀진 코드 데이터가 재할당 가능한지 판별하는 단계, 상기 읽혀진 코드 데이터가 재할당이 가능하다면, 상기 읽혀진 코드 데이터를 동작 속도와 전력 소비를 고려하여 메인 메모리에 피닝할 지를 판별하는 단계, 및 상기 판별결과로써 상기 읽혀진 코드 데이터를 상기 메인 메모리에 피닝하는 단계를 포함한다.
본 발명에 따른 컴퓨팅 시스템, 중앙처리장치, 상기 중앙처리장치에 직접 접근하는 장치들을 상기 중앙처리장치에 연결하기 위한 노스 브릿지, 상기 노스 브릿지에 연결되고, 상기 중앙처리장치의 동작을 수행하는데 사용되는 데이터를 저장하는 메인 메모리, 상기 노스 브릿지에 연결되고, 상기 중앙처리장치에 간접 접근하는 장치들을 연결하기 위한 사우스 브릿지, 및 상기 사우스 브릿지에 연결되고, 사용자의 데이터를 저장하고 및 코드 혹은 데이터를 저장하는 저장 장치를 포함하되, 상기 메인 메모리는, 상기 저장 장치에 저장된 코드 데이터가 피닝되고, 상기 피닝된 코드 데이터가 XIP 되는 비휘발성 메모리를 포함한다.
실시 예에 있어서, 상기 비휘발성 메모리는 피램이고, 상기 메인 메모리는 상기 데이터를 임시로 저장하기 위한 디램을 더 포함한다.
실시 예에 있어서, 상기 피램 및 상기 디램은 동일한 인터페이스로 인터페이싱을 수행한다.
실시 예에 있어서, 상기 컴퓨팅 시스템의 하이버네이션 동작시 상기 디램에 있는 데이터만 상기 저장 장치로 백업하고, 상기 백업된 데이터를 다시 디램에 복원한다.
상술한 바와 같이 본 발명에 따른 컴퓨팅 시스템은 부팅 동작시 XIP되는 비휘발성 메모리에 피닝된 코드/데이터를 이용하여 부팅 동작을 수행하도록 구현됨으로써, 부팅 동작시 코드/데이터가 저장된 저장 장치의 접근 회수를 줄일 수 있게 된다. 이로써, 본 발명의 컴퓨팅 시스템은 부팅 속도가 빨라지고, 전력 소모도 줄어들게 된다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
본 발명에 따른 컴퓨팅 시스템은 코드/데이터를 XIP되는 비휘발성 메모리를 갖는 메인 메모리로 피닝시키도록 구현될 것이다. 여기서, 메인 메모리는 랜덤 억세스가 가능한 메모리이다. 이로써, 본 발명의 컴퓨팅 시스템은, 운용시 비휘발성 메모리에 피닝된 코드/데이터를 이용함으로써, 부팅 속도를 향상시키고, 전력 소비도 줄일 수 있게 될 것이다.
도 1은 본 발명에 따른 컴퓨팅 시스템을 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 중앙처리장치(100), 노스 브릿지(200), 메인 메모리(300), 사우스 브릿지(300), 및 저장 장치(500)를 포함할 것이다. 본 발명의 메인 메모리(300)는 XIP(eXecution In Place)할 수 있는 운영 시스템 부트 코드/데이터, 어플리케이션 프로그램의 코드/데이터가 피닝(pinnig)되는 비휘발성 메모리(340)를 포함할 것이다. 여기서 XIP(현지실행)는 시스템 메모리로 옮기지 않고 바로 실행하는 것을 의미한다. 또한, 여기서 피닝된다는 것은 저장 장치(500)의 운영 시스템 부트 코드/데이터, 어플리케이션 코드/데이터가 저장 장치(500)로부터 로딩되어 저장된 것을 의미한다.
중앙처리장치(100)는 컴퓨팅 시스템(10)의 전반적인 동작을 제어할 것이다.
노스 브릿지(200)는 중앙처리 장치(100)와 연결되고, 높은 전송 속도와 시스템 성능을 요구하는 구성 요소나 주변 장치를 연결하기 위한 하드웨어 혹은 소프트웨어 모듈일 것이다.
메인 메모리(300)는 중앙처리장치(100)의 동작을 수행하는데 사용되는 데이터를 저장하는 디램(320) 및 운영 시스템의 부트 코드 및 데이터, 어플리케이션 코드 및 데이터를 피닝되는 비휘발성 메모리(340)를 포함할 것이다. 본 발명의 비휘발성 메모리(340)는 랜덤 억세스가 가능한 메모리이다. 예를 들어, 비휘발성 메모리(340)는 피램(PRAM)일 수 있다.
비휘발성 메모리(340)는 피닝 정보 영역(342), 부트 코드/데이터 영역(344), 및 어플리케이션 코드/데이터 영역(346)을 포함할 것이다.
피닝 정보 영역(342)은 비휘발성 메모리(340)에 피닝된 XIP 수행가능한 정보를 알려주기 위한 영역이다. 예를 들어, 부트 코드/데이터 영역(344)에 대응하는 주소에 어떠한 운영 시스템의 부트 코드/데이터가 피닝되어 있는지 혹은 어플리케이션 코드/데이터 영역(346)에 대응하는 주소에 어떠한 어플리케이션 코드/데이터가 피닝되어 있는지에 대한 정보가 피닝 정보 영역(342)에 저장될 것이다. 즉, 피닝 정보 영역(342)은 저장 장치(500)에 저장된 운영 시스템 부트 코드/데이터 혹은 어플리케이션 코드/데이터가 비휘발성 메모리(340)에 재할당된 정보를 저장할 것이다.
부트 코드/데이터 영역(344)은 저장 장치(500)에 저장된 운영 시스템의 부트 코드 혹은 데이터가 피닝되는 영역이다. 어플리케이션 코드/데이터 영역(346)은 저장 장치(500)에 저장된 어플리케이션 프로그램의 코드 혹은 데이터가 피닝되는 영역이다.
본 발명의 메인 메모리(300)는 피램과 디램으로 구성된 하이브리드 메인 메모리로 구현될 수 있다. 이때 피램과 디램은 동일한 인터페이스로 인터페이싱을 수행하도록 구현될 수 있다. 그러나 본 발명에 따른 피램 및 디램이 반드시 동일한 인터페이스를 이용한다고 국한될 필요는 없다. 본 발명에서는 피램의 비휘발성 XIP 메모리 특성을 이용하여 컴퓨팅 시스템(10)의 부팅 시간, 응용 런칭 시간, 및 하이버네이션 온/오프 시간을 대폭 단축하도록 구현될 것이다. 또한, 이에 따른, 컴퓨팅 시스템(10)의 전력 소모도 크게 줄이게 될 것이다.
사우스 브릿지(400)는 노스 브리지(200)와 연결되고, 낮은 전송 속도와 시스템 성능을 요구하는 시스템 구성 요소나 주변 장치를 연결하기 위해 사용되는 하드웨어 혹은 소프트웨어 모듈일 것이다.
저장 장치(500)는 사우스 브릿지(400)에 연결되고, 사용자의 데이터가 저장될 것이다. 저장 장치(500)에는 컴퓨팅 시스템(10)의 운영 시스템 및 어플리케이션 프로그램이 설치될 것이다. 즉, 저장 장치(500)는 운영 시스템의 부트 코드/데이터 혹은 어플리케이션 코드/데이터를 저장할 것이다.
본 발명의 저장 장치(500)는 플래시 메모리 저장장치, HDD(Hard Disk Drive), SDD(Solid State Drive) 등이 될 수 있을 것이다.
일반적인 컴퓨팅 시스템은 부팅 동작시 사우스 브릿지의 인터페이스(PATA, SATA, ...)를 통해 저장장치의 운영 부트 코드/데이터를 읽거나 쓰기 동작을 수행하나, 본 발명의 컴퓨팅 시스템(10)은 메인 메모리 계층(L3 Memory)에서 운영 부트 코드/데이터를 직접 수행할 수 있다. 이를 통해 볼 때, 본 발명의 컴퓨팅 시스템(10)은 일반적인 그것보다 부팅 시간을 크게 줄일 수 있을 것이다.
도 2은 본 발명에 따른 컴퓨팅 시스템(10)의 부팅 방법을 보여주는 흐름도이다. 도 1 및 도 2를 참조하면, 컴퓨팅 시스템(10)의 부팅 방법은 다음과 같다.
컴퓨팅 시스템(10)에 전원 공급이 될 때, 부트 로더(Boot Loader)는 비휘발성 메모리(340)의 피닝 정보 영역(342)로부터 피닝 정보를 읽어 올 것이다(S110). 여기서 부트 로더는 부팅 동작을 수행하는 부트 코드/데이터를 메인 메모리(300)로 로딩하기 위한 소프트웨어적인 모듈을 의미한다. 이로써, 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 어떠한 부트 코드/데이터가 로딩되고, 피닝되어 있는지가 확인될 것이다.
이후, 부트 로더는 새로운 부트 코드/데이터에 대한 재할당이 필요한지를 판별할 것이다(S120). 재할당될 부트 코드/데이터가 있다면, 부트 로더는 부트 코드/데이터 피닝 방법에 따라 재할당될 부트 코드/데이터를 피닝시킬 것이다(S130). 부트 코드/데이터 피닝 방법은 도 3에서 자세히 설명하도록 하겠다.
이후, 부트 코드/데이터 영역(344)에 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다(S140). 만약, 재할당될 부트 코드/데이터가 없다면, 부트 코드/데이터 영역(344)에 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다. 이로써 컴퓨터 시스템(10)의 부팅 동작이 완료될 것이다.
도 3는 도 2에 도시된 부트 코드/데이터 피닝 방법을 보여주는 흐름도이다. 아래에서는 설명의 편의를 위하여, 부트 코드/데이터가 도 4에 도시된 바와 같이 N(N은 자연수)개의 페이지에 저장되어 있다고 가정하겠다. 도 1 내지 도 4을 참조하면, 부트 코드/데이터 피닝 방법은 다음과 같다.
부트 로더는 운영 시스템의 부팅 작업을 위해서 저장 장치(500)에 접근하기 이전에 비휘발성 메모리(340)의 피닝 정보 영역(342)를 참조하여, 어떠한 운영 시스템 부트 코드/데이터가 피닝되어 있는지를 확인할 것이다. 부트 로더는 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 피닝되지 않은 운영 시스템의 부트 코드/데이터에 대해서만 저장 장치(500)로 접근하도록 설계될 것이다.
저장 장치(500)에 저장된 부트 코드 혹은 데이터에 대한 피닝 동작이 요구될 때, 부트 로더는 저장 장치(500)의 제 1 페이지(Page0)로부터 부트 코드/데이터를 읽어올 것이다(S131,S132). 이때 부트 로더는 읽혀진 부트 코드/데이터가 비휘발성 메모리(340)에 재할당 가능한지를 판별할 것이다(S133). 만약, 재할당이 가능하지 않다면, K가 1만큼 증가되고(S137), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 재할당이 가능하다면, 부트 로더는 읽혀진 부트 코드/데이터가 부트 속도 및 전력 소비에 영향을 많이 주는지를 판별할 것이다(S134). 만약, 읽혀진 부트 코드/데이터가 부트 속도 및 전력 소비에 영향을 많이 주지 않는다면, K가 1만큼 증가되고(S137), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 읽혀진 부트 코드/데이터가 부트 속도 및 전력 소비에 영향을 많이 준다면, 부트 로더는 읽혀진 부트 코드/데이터를 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 피닝시킬 것이다(S135). 즉, 읽혀진 부트 코드/데이터에 대응하는 페이지가 비휘발성 메모리(340)에 재할당될 것이다.
이후, 부트 로더는 부팅 코드/데이터의 피닝 동작을 수행하는 페이지가 최대 페이지인지 판별할 것이다(S136). 즉, K = N-1인지가 판별될 것이다. 만약, K가 N-1이 아니라면, K가 1만큼 증가되고(S137), 다음 페이지에 대한 읽기 동작이 수행될 것이다. 만약, K가 N-1이라면, 부트 로더는 피닝된 정보를 피닝 정보 영역(342)에 저장할 것이다(S138). 이러한 피닝된 정보에는 새롭게 피닝된 부트 코드/데이터가 무엇인지, 어떤 주소에 저장되었는 지가 포함될 것이다. 이후, 운영 시스템의 부트 코드/데이터에 대한 피닝 동작이 완료될 것이다.
도 5는 본 발명에 따른 컴퓨팅 시스템의 어플리케이션 런치 방법을 보여주는 흐름도이다.
어플리케이션 로더(Application Loader)는 비휘발성 메모리(340)의 피닝 정보 영역(342)로부터 피닝 정보를 읽어 올 것이다(S210). 여기서 어플리케이션 로더는 응용 프로그램을 수행하기 위한 코드/데이터를 메인 메모리(300)으로 로딩하기 위한 소프트웨어적인 모듈을 의미한다. 이로써, 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 어떠한 부트 코드/데이터가 로딩되고, 피닝되어 있는지가 확인될 것이다.
이후, 어플리케이션 로더는 새로운 어플리케이션 코드/데이터에 대한 재할당이 필요한지를 판별할 것이다(S220). 재할당될 어플리케이션 코드/데이터가 있다면, 어플리케이션 로더는 어플리케이션 코드/데이터 피닝 방법에 따라 재할당될 부트 코드/데이터를 피닝시킬 것이다(S330). 어플리케이션 코드/데이터 피닝 방법은 도 6에서 자세히 설명하도록 하겠다.
이후, 어플리케이션 코드/데이터 영역(346)에 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다(S240). 만약, 재할당될 어플리케이션 코드/데이터가 없다면, 어플리케이션 코드/데이터 영역(346)에 피닝된 어플리케이션 코드/데이터에 따라 어플리케이션 런치 동작이 수행될 것이다. 이로써 컴퓨터 시스템(10)의 어플리케이션 런치 동작이 완료될 것이다.
도 6는 도 5에 도시된 어플리케이션 코드/데이터 피닝 방법을 보여주는 흐름도이다. 도 1, 도 5 및 도 6을 참조하면, 본 발명의 어플리케이션 코드/데이터 피인 방법은 다음과 같다.
운영 시스템의 어플리케이션 로더는 응용 프로그램 동작을 수행시 어플리케이션 코드/데이터를 저장 장치(500)으로부터 읽어오기 전에, 비휘발성 메모리(340)의 피닝 정보 영역(342)를 참조하면 어떤 어플리케이션 코드/데이터가 피닝되어 있는지를 알아낼 것이다. 어플리케이션 로더는 비휘발성 메모리(340)의 어플리케이션 코드/데이터 영역(346)에 피닝되지 않은 어플리케이션 코드/데이터에 대해서만 저장 장치(500)를 접근하도록 설계될 것이다.
도 7에 도시된 바와 같이 저장 장치(500)에 저장된 어플리케이션 코드 혹은 데이터에 대한 피닝 동작이 요구될 때, 어플리케이션 로더는 저장 장치(500)의 K=0, 제 K+1페이지(Page0)로부터 어플리케이션 런치 코드/데이터를 읽어올 것이다(S231,S232).
어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터가 사용자에 의해 자주 사용되는지를 판별할 것이다(S233). 만약, 자주 사용되지 않는다면, K가 1만큼 증가되고(S238), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터가 비휘발성 메모리(340)에 재할당 가능한지를 판별할 것이다(S234). 만약, 재할당이 가능하지 않다면, K가 1만큼 증가되고(S238), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 재할당이 가능하다면, 어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터가 어플리케이션 런치 속도 및 전력 소비에 영향을 많이 주는지를 판별할 것이다(S235). 만약, 읽혀진 어플리케이션 런치 코드/데이터가 어플리케이션 런치 속도 및 전력 소비에 영향을 많이 주지 않는다면, K가 1만큼 증가되고(S238), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 읽혀진 어플리케이션 런치 코드/데이터가 어플리케이션 런치 속도 및 전력 소비에 영향을 많이 준다면, 어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터를 비휘발성 메모리(340)의 어플리케이션 코드/데이터 영역(346)에 피닝시킬 것이다(S236).
이후, 어플리케이션 로더는 어플리케이션 런치 코드/데이터의 피닝 동작을 수행하는 페이지가 최대 페이지인지 판별할 것이다(S237). 즉, K = N-1인지가 판별될 것이다. 만약, K가 N-1이 아니라면, K가 1만큼 증가되고(S228), 다음 페이지에 대한 읽기 동작이 수행될 것이다. 만약, K가 N-1이라면, 어플리케이션 로더는 피닝된 정보를 피닝 정보 영역(342)에 저장할 것이다(S239). 이후, 어플리케이션 런치 코드/데이터에 대한 피닝 동작이 완료될 것이다.
도 8는 본 발명에 따른 컴퓨팅 시스템의 하이버네이션(Hibernation)을 보여주는 도면이다. 여기서 하이버네이션은 컴퓨팅 시스템(10)의 차단됨과 동시에 저장 장치 내에 별도로 마련된 공간에 작업하고 있던 데이터를 저장하는 전력 관리 기술이다. 하이버네이션은 어플리케이션이나 작업 창을 종료하지 않고 최대 절전 모드로 시스템을 유지하면서 이전에 작업하던 상태로 빠르게 재시작할 수 있게 한다.
컴퓨팅 시스템(10)은 동작 실행 중에서 메인 메모리(300)에 저장된 데이터를 이용할 것이다. 즉, 디램(320) 및 비휘발성 메모리(340)에 저장된 데이터를 이용하여 작업이 수행될 것이다. 본 발명의 컴퓨팅 시스템(10)은 하이버네이션 동작시 디램(320)에 저장된 데이터만 저장 장치(500)로 백업하면 될 것이다. 비휘발성 메모리(340)에 저장된 데이터는 백업할 필요가 없다. 복원시에도 저장 장치(500)에 백업된 데이터만 디램(320)으로 로딩하면 될 것이다. 따라서 본 발명의 컴퓨팅 시스템(10)에서는 백업되는 데이터 및 복원되는 데이터의 량이 종래의 그것보다 상대적으로 크게 줄게 될 것이다. 이로써, 본 발명의 컴퓨팅 시스템(10)은 하이버네이션 온/오프 시간이 크게 단축될 것이다.
상술된 바와 같이, 본 발명에 따른 컴퓨팅 시스템(10)은 디램과 비휘발성 메모리로 구성된 하이브리드 메인 메모리를 구비할 것이다. 비휘발성 메모리는 저장된 코드/데이터의 리텐션(retention)이 가능하고, XIP 가능할 것이다.
본 발명에 따른 컴퓨팅 시스템(10)은 소프트웨어적으로 저장 장치(500)에 저장된 운영 시스템의 코드/데이터를 비휘발성 메모리(340)에 로딩하는 운영시스템 부트 로더를 구비할 것이다. 이러한 운영시스템 부트 로더는 비휘발성 메모리(340)에 피닝된 코드/데이터를 인지함에 따라 운영 시스템의 부팅 동작시 혹은 하이버네이션 동작시에 저장 장치(500)의 접근 회수를 감소시킬 것이다.
본 발명의 컴퓨팅 시스템(10)은 소프트웨어적으로 비휘발성 메모리(340)의 특정 영역에 XIP가 가능하도록 피닝된 코드/데이터를 설정/변경할 수 있도록 구현될 것이다.
본 발명의 컴퓨팅 시스템(10)은 소프트웨어적으로 비휘발성 메모리(340)에 저장될 피닝된 코드/데이터를 저장 장치(500)에 대한 접근 회수를 감소시키기 위해 동적으로 선택할 수 있도록 구현될 것이다.
본 발명에 따른 컴퓨팅 시스템(10)을 휴대용 컴퓨터에 적용할 경우에는 운영 시스템의 부팅 시간 및 하이버네이션의 온/오프 시간이 크게 단축됨으로써 전력 소비에 있어서 매우 유용할 것이다. 따라서, 1회 충전으로 사용할 수 있는 배터리 사용시간이 크게 증대될 것이다.
도 9는 본 발명에 따른 메모리 시스템(20)에 대한 실시 예를 보여주는 도면이다. 도 9를 참조하면, 메모리 시스템(20)은 중앙처리장치(21), 워킹 램(22), 피램(23), 및 낸드 플래시 메모리(24)를 포함할 것이다. 본 발명의 피램(23)은 XIP 기능을 수행하는 코드/메타 데이터를 저장할 것이다.
중앙처리장치(21)는 메모리 시스템(20)의 전반적인 동작을 제어할 것이다.
워킹 램(22)의 중앙처리장치(21)의 작업 중에 요구되는 데이터를 임시로 저장할 것이다. 이러한 워킹 램(22)은 휘발성 메모리로서 디램, 에스램, M-SDRAM 등이 사용될 수 있을 것이다.
피램(23)은 메모리 시스템(20)의 시스템의 부트 코드/데이터, 낸드 플래시 저장 장치(24)의 메타 데이터가 피닝될 것이다. 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다. 피닝된 메타 데이터를 이용하여 낸드 플래시 메모리(24)를 제어할 것이다. 피램(23)에 피닝된 코드/데이터는 메모리 시스템(20)에서 XIP될 것이다.
낸드 플래시 메모리(24)는 적어도 하나 이상의 낸드 플래시 메모리들(도시되지 안음)을 포함할 것이다. 낸드 플래시 메모리(24)는 사용자의 데이터를 저장하기 위한 장치이다.
본 발명에 따른 메모리 시스템 또는 저장 장치는 이동형 저장 장치로서 사용될 수 있다. 따라서, MP3, 디지털 카메라, PDA, e-Book의 저장 장치로서 사용될 수 있다. 또한, 디지털 TV나 컴퓨터 등의 저장 장치로서 사용될 수 있다.
본 발명에 따른 메모리 시스템 또는 저장 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템 또는 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
본 발명에 따른 컴퓨팅 시스템은 코드/데이터를 XIP되는 비휘발성 메모리를 갖는 메인 메모리로 피닝시키도록 구현될 것이다. 여기서, 메인 메모리는 랜덤 억세스가 가능한 메모리이다. 이로써, 본 발명의 컴퓨팅 시스템은, 운용시 비휘발성 메모리에 피닝된 코드/데이터를 이용함으로써, 부팅 속도를 향상시키고, 전력 소비도 줄일 수 있게 될 것이다.
도 1은 본 발명에 따른 컴퓨팅 시스템을 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 중앙처리장치(100), 노스 브릿지(200), 메인 메모리(300), 사우스 브릿지(300), 및 저장 장치(500)를 포함할 것이다. 본 발명의 메인 메모리(300)는 XIP(eXecution In Place)할 수 있는 운영 시스템 부트 코드/데이터, 어플리케이션 프로그램의 코드/데이터가 피닝(pinnig)되는 비휘발성 메모리(340)를 포함할 것이다. 여기서 XIP(현지실행)는 시스템 메모리로 옮기지 않고 바로 실행하는 것을 의미한다. 또한, 여기서 피닝된다는 것은 저장 장치(500)의 운영 시스템 부트 코드/데이터, 어플리케이션 코드/데이터가 저장 장치(500)로부터 로딩되어 저장된 것을 의미한다.
중앙처리장치(100)는 컴퓨팅 시스템(10)의 전반적인 동작을 제어할 것이다.
노스 브릿지(200)는 중앙처리 장치(100)와 연결되고, 높은 전송 속도와 시스템 성능을 요구하는 구성 요소나 주변 장치를 연결하기 위한 하드웨어 혹은 소프트웨어 모듈일 것이다.
메인 메모리(300)는 중앙처리장치(100)의 동작을 수행하는데 사용되는 데이터를 저장하는 디램(320) 및 운영 시스템의 부트 코드 및 데이터, 어플리케이션 코드 및 데이터를 피닝되는 비휘발성 메모리(340)를 포함할 것이다. 본 발명의 비휘발성 메모리(340)는 랜덤 억세스가 가능한 메모리이다. 예를 들어, 비휘발성 메모리(340)는 피램(PRAM)일 수 있다.
비휘발성 메모리(340)는 피닝 정보 영역(342), 부트 코드/데이터 영역(344), 및 어플리케이션 코드/데이터 영역(346)을 포함할 것이다.
피닝 정보 영역(342)은 비휘발성 메모리(340)에 피닝된 XIP 수행가능한 정보를 알려주기 위한 영역이다. 예를 들어, 부트 코드/데이터 영역(344)에 대응하는 주소에 어떠한 운영 시스템의 부트 코드/데이터가 피닝되어 있는지 혹은 어플리케이션 코드/데이터 영역(346)에 대응하는 주소에 어떠한 어플리케이션 코드/데이터가 피닝되어 있는지에 대한 정보가 피닝 정보 영역(342)에 저장될 것이다. 즉, 피닝 정보 영역(342)은 저장 장치(500)에 저장된 운영 시스템 부트 코드/데이터 혹은 어플리케이션 코드/데이터가 비휘발성 메모리(340)에 재할당된 정보를 저장할 것이다.
부트 코드/데이터 영역(344)은 저장 장치(500)에 저장된 운영 시스템의 부트 코드 혹은 데이터가 피닝되는 영역이다. 어플리케이션 코드/데이터 영역(346)은 저장 장치(500)에 저장된 어플리케이션 프로그램의 코드 혹은 데이터가 피닝되는 영역이다.
본 발명의 메인 메모리(300)는 피램과 디램으로 구성된 하이브리드 메인 메모리로 구현될 수 있다. 이때 피램과 디램은 동일한 인터페이스로 인터페이싱을 수행하도록 구현될 수 있다. 그러나 본 발명에 따른 피램 및 디램이 반드시 동일한 인터페이스를 이용한다고 국한될 필요는 없다. 본 발명에서는 피램의 비휘발성 XIP 메모리 특성을 이용하여 컴퓨팅 시스템(10)의 부팅 시간, 응용 런칭 시간, 및 하이버네이션 온/오프 시간을 대폭 단축하도록 구현될 것이다. 또한, 이에 따른, 컴퓨팅 시스템(10)의 전력 소모도 크게 줄이게 될 것이다.
사우스 브릿지(400)는 노스 브리지(200)와 연결되고, 낮은 전송 속도와 시스템 성능을 요구하는 시스템 구성 요소나 주변 장치를 연결하기 위해 사용되는 하드웨어 혹은 소프트웨어 모듈일 것이다.
저장 장치(500)는 사우스 브릿지(400)에 연결되고, 사용자의 데이터가 저장될 것이다. 저장 장치(500)에는 컴퓨팅 시스템(10)의 운영 시스템 및 어플리케이션 프로그램이 설치될 것이다. 즉, 저장 장치(500)는 운영 시스템의 부트 코드/데이터 혹은 어플리케이션 코드/데이터를 저장할 것이다.
본 발명의 저장 장치(500)는 플래시 메모리 저장장치, HDD(Hard Disk Drive), SDD(Solid State Drive) 등이 될 수 있을 것이다.
일반적인 컴퓨팅 시스템은 부팅 동작시 사우스 브릿지의 인터페이스(PATA, SATA, ...)를 통해 저장장치의 운영 부트 코드/데이터를 읽거나 쓰기 동작을 수행하나, 본 발명의 컴퓨팅 시스템(10)은 메인 메모리 계층(L3 Memory)에서 운영 부트 코드/데이터를 직접 수행할 수 있다. 이를 통해 볼 때, 본 발명의 컴퓨팅 시스템(10)은 일반적인 그것보다 부팅 시간을 크게 줄일 수 있을 것이다.
도 2은 본 발명에 따른 컴퓨팅 시스템(10)의 부팅 방법을 보여주는 흐름도이다. 도 1 및 도 2를 참조하면, 컴퓨팅 시스템(10)의 부팅 방법은 다음과 같다.
컴퓨팅 시스템(10)에 전원 공급이 될 때, 부트 로더(Boot Loader)는 비휘발성 메모리(340)의 피닝 정보 영역(342)로부터 피닝 정보를 읽어 올 것이다(S110). 여기서 부트 로더는 부팅 동작을 수행하는 부트 코드/데이터를 메인 메모리(300)로 로딩하기 위한 소프트웨어적인 모듈을 의미한다. 이로써, 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 어떠한 부트 코드/데이터가 로딩되고, 피닝되어 있는지가 확인될 것이다.
이후, 부트 로더는 새로운 부트 코드/데이터에 대한 재할당이 필요한지를 판별할 것이다(S120). 재할당될 부트 코드/데이터가 있다면, 부트 로더는 부트 코드/데이터 피닝 방법에 따라 재할당될 부트 코드/데이터를 피닝시킬 것이다(S130). 부트 코드/데이터 피닝 방법은 도 3에서 자세히 설명하도록 하겠다.
이후, 부트 코드/데이터 영역(344)에 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다(S140). 만약, 재할당될 부트 코드/데이터가 없다면, 부트 코드/데이터 영역(344)에 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다. 이로써 컴퓨터 시스템(10)의 부팅 동작이 완료될 것이다.
도 3는 도 2에 도시된 부트 코드/데이터 피닝 방법을 보여주는 흐름도이다. 아래에서는 설명의 편의를 위하여, 부트 코드/데이터가 도 4에 도시된 바와 같이 N(N은 자연수)개의 페이지에 저장되어 있다고 가정하겠다. 도 1 내지 도 4을 참조하면, 부트 코드/데이터 피닝 방법은 다음과 같다.
부트 로더는 운영 시스템의 부팅 작업을 위해서 저장 장치(500)에 접근하기 이전에 비휘발성 메모리(340)의 피닝 정보 영역(342)를 참조하여, 어떠한 운영 시스템 부트 코드/데이터가 피닝되어 있는지를 확인할 것이다. 부트 로더는 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 피닝되지 않은 운영 시스템의 부트 코드/데이터에 대해서만 저장 장치(500)로 접근하도록 설계될 것이다.
저장 장치(500)에 저장된 부트 코드 혹은 데이터에 대한 피닝 동작이 요구될 때, 부트 로더는 저장 장치(500)의 제 1 페이지(Page0)로부터 부트 코드/데이터를 읽어올 것이다(S131,S132). 이때 부트 로더는 읽혀진 부트 코드/데이터가 비휘발성 메모리(340)에 재할당 가능한지를 판별할 것이다(S133). 만약, 재할당이 가능하지 않다면, K가 1만큼 증가되고(S137), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 재할당이 가능하다면, 부트 로더는 읽혀진 부트 코드/데이터가 부트 속도 및 전력 소비에 영향을 많이 주는지를 판별할 것이다(S134). 만약, 읽혀진 부트 코드/데이터가 부트 속도 및 전력 소비에 영향을 많이 주지 않는다면, K가 1만큼 증가되고(S137), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 읽혀진 부트 코드/데이터가 부트 속도 및 전력 소비에 영향을 많이 준다면, 부트 로더는 읽혀진 부트 코드/데이터를 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 피닝시킬 것이다(S135). 즉, 읽혀진 부트 코드/데이터에 대응하는 페이지가 비휘발성 메모리(340)에 재할당될 것이다.
이후, 부트 로더는 부팅 코드/데이터의 피닝 동작을 수행하는 페이지가 최대 페이지인지 판별할 것이다(S136). 즉, K = N-1인지가 판별될 것이다. 만약, K가 N-1이 아니라면, K가 1만큼 증가되고(S137), 다음 페이지에 대한 읽기 동작이 수행될 것이다. 만약, K가 N-1이라면, 부트 로더는 피닝된 정보를 피닝 정보 영역(342)에 저장할 것이다(S138). 이러한 피닝된 정보에는 새롭게 피닝된 부트 코드/데이터가 무엇인지, 어떤 주소에 저장되었는 지가 포함될 것이다. 이후, 운영 시스템의 부트 코드/데이터에 대한 피닝 동작이 완료될 것이다.
도 5는 본 발명에 따른 컴퓨팅 시스템의 어플리케이션 런치 방법을 보여주는 흐름도이다.
어플리케이션 로더(Application Loader)는 비휘발성 메모리(340)의 피닝 정보 영역(342)로부터 피닝 정보를 읽어 올 것이다(S210). 여기서 어플리케이션 로더는 응용 프로그램을 수행하기 위한 코드/데이터를 메인 메모리(300)으로 로딩하기 위한 소프트웨어적인 모듈을 의미한다. 이로써, 비휘발성 메모리(340)의 부트 코드/데이터 영역(344)에 어떠한 부트 코드/데이터가 로딩되고, 피닝되어 있는지가 확인될 것이다.
이후, 어플리케이션 로더는 새로운 어플리케이션 코드/데이터에 대한 재할당이 필요한지를 판별할 것이다(S220). 재할당될 어플리케이션 코드/데이터가 있다면, 어플리케이션 로더는 어플리케이션 코드/데이터 피닝 방법에 따라 재할당될 부트 코드/데이터를 피닝시킬 것이다(S330). 어플리케이션 코드/데이터 피닝 방법은 도 6에서 자세히 설명하도록 하겠다.
이후, 어플리케이션 코드/데이터 영역(346)에 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다(S240). 만약, 재할당될 어플리케이션 코드/데이터가 없다면, 어플리케이션 코드/데이터 영역(346)에 피닝된 어플리케이션 코드/데이터에 따라 어플리케이션 런치 동작이 수행될 것이다. 이로써 컴퓨터 시스템(10)의 어플리케이션 런치 동작이 완료될 것이다.
도 6는 도 5에 도시된 어플리케이션 코드/데이터 피닝 방법을 보여주는 흐름도이다. 도 1, 도 5 및 도 6을 참조하면, 본 발명의 어플리케이션 코드/데이터 피인 방법은 다음과 같다.
운영 시스템의 어플리케이션 로더는 응용 프로그램 동작을 수행시 어플리케이션 코드/데이터를 저장 장치(500)으로부터 읽어오기 전에, 비휘발성 메모리(340)의 피닝 정보 영역(342)를 참조하면 어떤 어플리케이션 코드/데이터가 피닝되어 있는지를 알아낼 것이다. 어플리케이션 로더는 비휘발성 메모리(340)의 어플리케이션 코드/데이터 영역(346)에 피닝되지 않은 어플리케이션 코드/데이터에 대해서만 저장 장치(500)를 접근하도록 설계될 것이다.
도 7에 도시된 바와 같이 저장 장치(500)에 저장된 어플리케이션 코드 혹은 데이터에 대한 피닝 동작이 요구될 때, 어플리케이션 로더는 저장 장치(500)의 K=0, 제 K+1페이지(Page0)로부터 어플리케이션 런치 코드/데이터를 읽어올 것이다(S231,S232).
어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터가 사용자에 의해 자주 사용되는지를 판별할 것이다(S233). 만약, 자주 사용되지 않는다면, K가 1만큼 증가되고(S238), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터가 비휘발성 메모리(340)에 재할당 가능한지를 판별할 것이다(S234). 만약, 재할당이 가능하지 않다면, K가 1만큼 증가되고(S238), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 재할당이 가능하다면, 어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터가 어플리케이션 런치 속도 및 전력 소비에 영향을 많이 주는지를 판별할 것이다(S235). 만약, 읽혀진 어플리케이션 런치 코드/데이터가 어플리케이션 런치 속도 및 전력 소비에 영향을 많이 주지 않는다면, K가 1만큼 증가되고(S238), 다음 페이지에 대한 읽기 동작이 수행될 것이다.
만약, 읽혀진 어플리케이션 런치 코드/데이터가 어플리케이션 런치 속도 및 전력 소비에 영향을 많이 준다면, 어플리케이션 로더는 읽혀진 어플리케이션 런치 코드/데이터를 비휘발성 메모리(340)의 어플리케이션 코드/데이터 영역(346)에 피닝시킬 것이다(S236).
이후, 어플리케이션 로더는 어플리케이션 런치 코드/데이터의 피닝 동작을 수행하는 페이지가 최대 페이지인지 판별할 것이다(S237). 즉, K = N-1인지가 판별될 것이다. 만약, K가 N-1이 아니라면, K가 1만큼 증가되고(S228), 다음 페이지에 대한 읽기 동작이 수행될 것이다. 만약, K가 N-1이라면, 어플리케이션 로더는 피닝된 정보를 피닝 정보 영역(342)에 저장할 것이다(S239). 이후, 어플리케이션 런치 코드/데이터에 대한 피닝 동작이 완료될 것이다.
도 8는 본 발명에 따른 컴퓨팅 시스템의 하이버네이션(Hibernation)을 보여주는 도면이다. 여기서 하이버네이션은 컴퓨팅 시스템(10)의 차단됨과 동시에 저장 장치 내에 별도로 마련된 공간에 작업하고 있던 데이터를 저장하는 전력 관리 기술이다. 하이버네이션은 어플리케이션이나 작업 창을 종료하지 않고 최대 절전 모드로 시스템을 유지하면서 이전에 작업하던 상태로 빠르게 재시작할 수 있게 한다.
컴퓨팅 시스템(10)은 동작 실행 중에서 메인 메모리(300)에 저장된 데이터를 이용할 것이다. 즉, 디램(320) 및 비휘발성 메모리(340)에 저장된 데이터를 이용하여 작업이 수행될 것이다. 본 발명의 컴퓨팅 시스템(10)은 하이버네이션 동작시 디램(320)에 저장된 데이터만 저장 장치(500)로 백업하면 될 것이다. 비휘발성 메모리(340)에 저장된 데이터는 백업할 필요가 없다. 복원시에도 저장 장치(500)에 백업된 데이터만 디램(320)으로 로딩하면 될 것이다. 따라서 본 발명의 컴퓨팅 시스템(10)에서는 백업되는 데이터 및 복원되는 데이터의 량이 종래의 그것보다 상대적으로 크게 줄게 될 것이다. 이로써, 본 발명의 컴퓨팅 시스템(10)은 하이버네이션 온/오프 시간이 크게 단축될 것이다.
상술된 바와 같이, 본 발명에 따른 컴퓨팅 시스템(10)은 디램과 비휘발성 메모리로 구성된 하이브리드 메인 메모리를 구비할 것이다. 비휘발성 메모리는 저장된 코드/데이터의 리텐션(retention)이 가능하고, XIP 가능할 것이다.
본 발명에 따른 컴퓨팅 시스템(10)은 소프트웨어적으로 저장 장치(500)에 저장된 운영 시스템의 코드/데이터를 비휘발성 메모리(340)에 로딩하는 운영시스템 부트 로더를 구비할 것이다. 이러한 운영시스템 부트 로더는 비휘발성 메모리(340)에 피닝된 코드/데이터를 인지함에 따라 운영 시스템의 부팅 동작시 혹은 하이버네이션 동작시에 저장 장치(500)의 접근 회수를 감소시킬 것이다.
본 발명의 컴퓨팅 시스템(10)은 소프트웨어적으로 비휘발성 메모리(340)의 특정 영역에 XIP가 가능하도록 피닝된 코드/데이터를 설정/변경할 수 있도록 구현될 것이다.
본 발명의 컴퓨팅 시스템(10)은 소프트웨어적으로 비휘발성 메모리(340)에 저장될 피닝된 코드/데이터를 저장 장치(500)에 대한 접근 회수를 감소시키기 위해 동적으로 선택할 수 있도록 구현될 것이다.
본 발명에 따른 컴퓨팅 시스템(10)을 휴대용 컴퓨터에 적용할 경우에는 운영 시스템의 부팅 시간 및 하이버네이션의 온/오프 시간이 크게 단축됨으로써 전력 소비에 있어서 매우 유용할 것이다. 따라서, 1회 충전으로 사용할 수 있는 배터리 사용시간이 크게 증대될 것이다.
도 9는 본 발명에 따른 메모리 시스템(20)에 대한 실시 예를 보여주는 도면이다. 도 9를 참조하면, 메모리 시스템(20)은 중앙처리장치(21), 워킹 램(22), 피램(23), 및 낸드 플래시 메모리(24)를 포함할 것이다. 본 발명의 피램(23)은 XIP 기능을 수행하는 코드/메타 데이터를 저장할 것이다.
중앙처리장치(21)는 메모리 시스템(20)의 전반적인 동작을 제어할 것이다.
워킹 램(22)의 중앙처리장치(21)의 작업 중에 요구되는 데이터를 임시로 저장할 것이다. 이러한 워킹 램(22)은 휘발성 메모리로서 디램, 에스램, M-SDRAM 등이 사용될 수 있을 것이다.
피램(23)은 메모리 시스템(20)의 시스템의 부트 코드/데이터, 낸드 플래시 저장 장치(24)의 메타 데이터가 피닝될 것이다. 피닝된 부트 코드/데이터에 따라 부팅 동작이 수행될 것이다. 피닝된 메타 데이터를 이용하여 낸드 플래시 메모리(24)를 제어할 것이다. 피램(23)에 피닝된 코드/데이터는 메모리 시스템(20)에서 XIP될 것이다.
낸드 플래시 메모리(24)는 적어도 하나 이상의 낸드 플래시 메모리들(도시되지 안음)을 포함할 것이다. 낸드 플래시 메모리(24)는 사용자의 데이터를 저장하기 위한 장치이다.
본 발명에 따른 메모리 시스템 또는 저장 장치는 이동형 저장 장치로서 사용될 수 있다. 따라서, MP3, 디지털 카메라, PDA, e-Book의 저장 장치로서 사용될 수 있다. 또한, 디지털 TV나 컴퓨터 등의 저장 장치로서 사용될 수 있다.
본 발명에 따른 메모리 시스템 또는 저장 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템 또는 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명에 따른 컴퓨팅 시스템을 보여주는 도면.
도 2은 본 발명에 따른 컴퓨팅 시스템의 부팅 방법을 보여주는 흐름도.
도 3은 도 2에 도시된 부트 코드/데이터 피닝 방법을 보여주는 흐름도.
도 4는 저장 장치에 저장된 부트 코드/데이터의 실시 예를 보여주는 도면.
도 5는 본 발명에 따른 컴퓨팅 시스템의 어플리케이션 런치 방법을 보여주는 흐름도.
도 6은 도 5에 도시된 어플리케이션 런치 코드/데이터 피닝 방법을 보여주는 흐름도.
도 7은 저장 장치에 저장된 어플리케이션 런치 코드/데이터의 실시 예를 보여주는 도면.
도 8은 본 발명에 따른 컴퓨팅 시스템의 하이버네이션 동작을 보여주는 도면.
도 9는 본 발명에 따른 메모리 시스템.
*도면의 주요부분에 대한 부호의 설명*
10: 컴퓨팅 시스템
100: 중앙처리장치 200: 노스 브릿지
300: 메인 메모리 320: 디램
340: 비휘발성 메모리 342: 피닝 정보 영역
344: 부트 코드/데이터 영역 346: 어플리케이션 코드/데이터 영역
400: 사우스 브릿지 500: 저장 장치
도 2은 본 발명에 따른 컴퓨팅 시스템의 부팅 방법을 보여주는 흐름도.
도 3은 도 2에 도시된 부트 코드/데이터 피닝 방법을 보여주는 흐름도.
도 4는 저장 장치에 저장된 부트 코드/데이터의 실시 예를 보여주는 도면.
도 5는 본 발명에 따른 컴퓨팅 시스템의 어플리케이션 런치 방법을 보여주는 흐름도.
도 6은 도 5에 도시된 어플리케이션 런치 코드/데이터 피닝 방법을 보여주는 흐름도.
도 7은 저장 장치에 저장된 어플리케이션 런치 코드/데이터의 실시 예를 보여주는 도면.
도 8은 본 발명에 따른 컴퓨팅 시스템의 하이버네이션 동작을 보여주는 도면.
도 9는 본 발명에 따른 메모리 시스템.
*도면의 주요부분에 대한 부호의 설명*
10: 컴퓨팅 시스템
100: 중앙처리장치 200: 노스 브릿지
300: 메인 메모리 320: 디램
340: 비휘발성 메모리 342: 피닝 정보 영역
344: 부트 코드/데이터 영역 346: 어플리케이션 코드/데이터 영역
400: 사우스 브릿지 500: 저장 장치
Claims (10)
- 컴퓨팅 시스템의 부팅 방법에 있어서:제 1 브릿지를 통하여 중앙처리장치에 연결된 메인 메모리에 운영 시스템의 부트 데이터가 피닝되어 있는지 확인하는 단계;상기 피닝된 부트 데이터의 재할당이 필요할 때, 상기 제 1 브릿지에 연결된 제 2 브릿지를 통하여 상기 중앙처리장치에 연결된 저장 장치로부터 부트 데이터를 읽어와 상기 메인 메모리로 피닝 동작을 수행하는 단계; 및상기 피닝된 부트 데이터를 이용하여 부팅하는 단계를 포함하는 부팅 방법.
- 제 1 항에 있어서,상기 메인 메모리는 현지실행(XIP) 기능을 수행하는 부팅 방법.
- 제 2 항에 있어서,상기 메인 메모리는 상기 컴퓨팅 시스템의 작업시 필요한 데이터를 임시로 저장하는 워킹 램을 더 포함하는 비휘발성 메모리의 부팅 방법.
- 제 1 항에 있어서,상기 피닝 동작을 수행하는 단계는,상기 저장 장치로부터 부트 데이터를 읽는 단계; 및상기 읽혀진 부트 데이터를 피닝할 지를 판별하는 단계를 포함하는 부팅 방 법.
- 제 1 항에 있어서,상기 피닝 동작을 수행하는 단계는, 상기 피닝된 정보를 상기 메인 메모리에 저장하는 단계를 포함하는 부팅 방법.
- 컴퓨팅 시스템의 코드 데이터 피닝 방법에 있어서:저장 장치에 저장된 코드 데이터를 읽어오는 단계;읽혀진 코드 데이터가 재할당 가능한지 판별하는 단계;상기 읽혀진 코드 데이터가 재할당이 가능하다면, 상기 읽혀진 코드 데이터를 동작 속도와 전력 소비를 고려하여 메인 메모리에 피닝할 지를 판별하는 단계; 및상기 판별결과로써 상기 읽혀진 코드 데이터를 상기 메인 메모리에 피닝하는 단계를 포함하는 피닝 방법.
- 중앙처리장치;상기 중앙처리장치에 직접 접근하는 장치들을 상기 중앙처리장치에 연결하기 위한 제 1 브릿지;상기 제 1 브릿지에 연결되고, 상기 중앙처리장치의 동작을 수행하는데 사용되는 부트 데이터를 저장하는 메인 메모리;상기 제 1 브릿지에 연결되고, 상기 중앙처리장치에 간접 접근하는 장치들을 연결하기 위한 제 2 브릿지; 및상기 제 2 브릿지에 연결되고, 사용자의 데이터를 저장하고 및 상기 부트 데이터를 저장하는 저장 장치를 포함하되,상기 메인 메모리는, 상기 저장 장치에 상기 부트 데이터가 피닝되고, 상기 피닝된 부트 데이터가 현지실행(XIP) 되는 비휘발성 메모리를 포함하는 컴퓨팅 시스템.
- 제 7 항에 있어서,상기 비휘발성 메모리는 피램이고,상기 메인 메모리는 상기 부트 데이터를 임시로 저장하기 위한 디램을 더 포함하는 컴퓨팅 시스템.
- 제 8 항에 있어서,상기 피램 및 상기 디램은 동일한 인터페이스로 인터페이싱을 수행하는 컴퓨팅 시스템.
- 제 9 항에 있어서,상기 컴퓨팅 시스템의 하이버네이션 동작시 상기 디램에 있는 데이터만 상기 저장 장치로 백업하고, 상기 백업된 데이터를 다시 상기 디램에 복원하는 컴퓨팅 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090014949A KR101583002B1 (ko) | 2009-02-23 | 2009-02-23 | 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 |
US12/656,715 US8856503B2 (en) | 2009-02-23 | 2010-02-16 | Computing system, booting method and code/data pinning method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090014949A KR101583002B1 (ko) | 2009-02-23 | 2009-02-23 | 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100095904A KR20100095904A (ko) | 2010-09-01 |
KR101583002B1 true KR101583002B1 (ko) | 2016-01-21 |
Family
ID=42631922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090014949A KR101583002B1 (ko) | 2009-02-23 | 2009-02-23 | 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8856503B2 (ko) |
KR (1) | KR101583002B1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207875B (zh) * | 2010-03-30 | 2014-11-12 | 鸿富锦精密工业(深圳)有限公司 | 媒体数据播放装置及其重新启动方法 |
KR101713051B1 (ko) | 2010-11-29 | 2017-03-07 | 삼성전자주식회사 | 하이브리드 메모리 시스템, 및 그 관리 방법 |
KR20120119092A (ko) * | 2011-04-20 | 2012-10-30 | 삼성전자주식회사 | 반도체 메모리 시스템 및 이의 구동 방법 |
US8607089B2 (en) * | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US20140052891A1 (en) * | 2012-03-29 | 2014-02-20 | Ferad Zyulkyarov | System and method for managing persistence with a multi-level memory hierarchy including non-volatile memory |
JP5971022B2 (ja) * | 2012-08-15 | 2016-08-17 | 富士ゼロックス株式会社 | 画像形成装置 |
US9207947B1 (en) * | 2012-08-30 | 2015-12-08 | Seagate Technology Llc | Fast boot in hybrid drives |
US8984267B2 (en) | 2012-09-30 | 2015-03-17 | Apple Inc. | Pinning boot data for faster boot |
AU2015100549B4 (en) * | 2012-09-30 | 2015-12-17 | Apple Inc. | Pinning boot data for faster boot |
US10126987B2 (en) * | 2012-10-18 | 2018-11-13 | Marvell International Ltd. | Storage devices and methods for controlling a storage device |
US20150347151A1 (en) * | 2014-05-28 | 2015-12-03 | Diablo Technologies Inc. | System and method for booting from a non-volatile memory |
US11204778B2 (en) * | 2017-01-23 | 2021-12-21 | Carl Zeiss Ag | Efficient hibernation apparatus and method for digital devices |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
KR102505913B1 (ko) | 2018-04-04 | 2023-03-07 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060064684A1 (en) | 2004-09-22 | 2006-03-23 | Royer Robert J Jr | Method, apparatus and system to accelerate launch performance through automated application pinning |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778443A (en) * | 1994-12-14 | 1998-07-07 | International Business Machines Corp. | Method and apparatus for conserving power and system resources in a computer system employing a virtual memory |
US7386653B2 (en) * | 2001-08-06 | 2008-06-10 | Sandisk Il Ltd | Flash memory arrangement |
US7082495B2 (en) * | 2002-06-27 | 2006-07-25 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
JP4311287B2 (ja) * | 2004-06-25 | 2009-08-12 | ソニー株式会社 | ブートシステム及びブート方法及びこのブート方法を用いたデータ処理装置 |
US8065563B2 (en) * | 2006-03-23 | 2011-11-22 | Mediatek Inc. | System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting |
US7716411B2 (en) * | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
KR20080057688A (ko) * | 2006-12-20 | 2008-06-25 | 주식회사 대우일렉트로닉스 | 비휘발성 메모리를 이용한 운영체계 부팅 방법 |
KR100819061B1 (ko) | 2007-03-06 | 2008-04-03 | 한국전자통신연구원 | 쓰기 전력 계산 및 데이터 반전 기능을 통한 상 변화메모리에서의 데이터 쓰기 장치 및 방법 |
US20080270811A1 (en) * | 2007-04-26 | 2008-10-30 | Super Talent Electronics Inc. | Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory |
KR20080096071A (ko) * | 2007-04-26 | 2008-10-30 | 삼성전자주식회사 | 비휘발성 램을 위한 코드 생성 방법 |
KR101281685B1 (ko) * | 2007-10-04 | 2013-07-03 | 삼성전자주식회사 | 상변화 메모리의 데이터 기록 방법, 데이터 판독 방법, 및그 장치 |
-
2009
- 2009-02-23 KR KR1020090014949A patent/KR101583002B1/ko not_active Application Discontinuation
-
2010
- 2010-02-16 US US12/656,715 patent/US8856503B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060064684A1 (en) | 2004-09-22 | 2006-03-23 | Royer Robert J Jr | Method, apparatus and system to accelerate launch performance through automated application pinning |
Also Published As
Publication number | Publication date |
---|---|
US8856503B2 (en) | 2014-10-07 |
KR20100095904A (ko) | 2010-09-01 |
US20100217966A1 (en) | 2010-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101583002B1 (ko) | 컴퓨팅 시스템, 그것의 부팅 방법, 및 코드 데이터 피닝 방법 | |
US10936327B2 (en) | Method of implementing magnetic random access memory (MRAM) for mobile system-on-chip boot | |
US9760503B2 (en) | Operation method of memory controller and nonvolatile memory system including the memory controller | |
US8819358B2 (en) | Data storage device, memory system, and computing system using nonvolatile memory device | |
US8463826B2 (en) | Incremental garbage collection for non-volatile memories | |
KR102002921B1 (ko) | 버퍼 운영 방법 및 그에 따른 반도체 저장 장치 | |
US20100174853A1 (en) | User device including flash and random write cache and method writing data | |
US20150019794A1 (en) | Data storage device and operating method thereof | |
EP2771785B1 (en) | Load boot data | |
US10649896B2 (en) | Storage device and data processing system including the same | |
US9081658B2 (en) | Storage device and data management method thereof | |
US9606811B2 (en) | Operating method of data storage device | |
US8423754B2 (en) | Computer system and method of booting the same | |
US8433886B2 (en) | Nonvolatile memory device including a buffer RAM and boot code management method thereof | |
US10528264B2 (en) | Storage device and data processing system including the same | |
US9734057B2 (en) | Semiconductor storage device and buffer operation method thereof | |
JP7443418B2 (ja) | 情報処理装置の製造方法、及び情報処理装置 | |
US20150052290A1 (en) | Data storage device and operating method thereof | |
KR20230060817A (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
US9229798B2 (en) | Error handling method, memory storage device and memory controlling circuit unit | |
KR20220005852A (ko) | 컨트롤러 및 컨트롤러의 동작방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
FPAY | Annual fee payment |
Payment date: 20191129 Year of fee payment: 5 |